oracle 备份与恢复学习总结

前端之家收集整理的这篇文章主要介绍了oracle 备份与恢复学习总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Oracle数据库的备份与恢复

http://jingyan.baidu.com/article/b2c186c8eb7713c46ef6ff22.html


Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。


导出/导入(Export/Import)
  利用Export可将数据从数据库提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。


1、 简单导出数据(Export)和导入数据(Import)


  Oracle支持三种方式类型的输出:


  (1)、表方式(T方式),将指定表的数据导出。


  (2)、用户方式(U方式),将指定用户的所有对象及数据导出。


  (3)、全库方式(Full方式),瘵数据库中的所有对象导出。


  数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件


2、 增量导出/导入


  增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。


  增量导出包括三种类型:


  (1)、“完全”增量导出(Complete)


  即备份三个数据库,比如:


  exp system/manager inctype=complete file=040731.dmp


  (2)、“增量型”增量导出


  备份上一次备份后改变的数据,比如:


  exp system/manager inctype=incremental file=040731.dmp


  (3)、“累积型”增量导出


  累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:


  exp system/manager inctype=cumulative file=040731.dmp


数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。


  比如数据库的被封任务可以做如下安排:


  星期一:完全备份(A)


  星期二:增量导出(B)


  星期三:增量导出(C)


  星期四:增量导出(D)


  星期五:累计导出(E)


  星期六:增量导出(F)


  星期日:增量导出(G)


  如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:


  第一步:用命令CREATE DATABASE重新生成数据库结构;


  第二步:创建一个足够大的附加回滚。


  第三步:完全增量导入A:


  imp system/manager inctype=RESTORE FULL=y FILE=A


  第四步:累计增量导入E:


  imp system/manager inctype=RESTORE FULL=Y FILE=E


  第五步:最近增量导入F:


  imp system/manager inctype=RESTORE FULL=Y FILE=F


冷备份
  冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份时将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份时最快和最安全的方法。冷备份的优点是:


  1、 是非常快速的备份方法(只需拷文件)


  2、 容易归档(简单拷贝即可)


  3、 容易恢复到某个时间点上(只需将文件再拷贝回去)


  4、 能与归档方法相结合,做数据库“最佳状态”的恢复。


  5、 低度维护,高度安全。


  但冷备份也有如下不足:


  1、 单独使用时,只能提供到“某一时间点上”的恢复。


  2、 再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。


  3、 若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。


  4、 不能按表或按用户恢复。


  如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:


  1、 所有数据文件


  2、 所有控制文件


  3、所有联机REDO LOG文件


  4、 Init.ora文件(可选)


  值得注意的使冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。


  下面是作冷备份的完整例子。


  (1) 关闭数据库


  sqlplus /nolog


  sql>connect /as sysdba


  sql>shutdown normal;


  (2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件


  sql>cp


  (3) 重启Oracle数据库


  sql>startup


热备份
  热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:


  1. 数据文件一个表空间一个表空间的备份。


  (1) 设置表空间为备份状态


  (2) 备份表空间的数据文件


  (3) 回复表空间为正常状态


  2. 备份归档log文件


  (1) 临时停止归档进程


  (2) log下那些在archive rede log目标目录中的文件


  (3) 重新启动archive进程


  (4) 备份归档的redo log文件


  3. 用alter database bachup controlfile命令来备份控制文件


  热备份的优点是:


  1. 可在表空间或数据库文件级备份,备份的时间短。


  2. 备份时数据库仍可使用。


  3. 可达到秒级恢复(恢复到某一时间点上)。


  4. 可对几乎所有数据库实体做恢复


  5. 恢复是快速的,在大多数情况下爱数据库仍工作时恢复。


  热备份的不足是:


  1. 不能出错,否则后果严重


  2. 若热备份不成功,所得结果不可用于时间点的恢复


  3. 因难于维护,所以要特别仔细小心,不允许“以失败告终”。
========

ORACLE数据库备份与还原命令

http://blog.csdn.net/rowisdom/article/details/8994318
简介:


数据泵使用指南
10g开始引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个Oracle数据库中.
数据泵导出导入(EXPDP和IMPDP)的作用
1,实现逻辑备份和逻辑恢复.
2,在数据库用户之间移动对象.
3,在数据库之间移动对象
4,实现表空间搬移.


数据泵导出导入与传统导出导入的区别
在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项;
EXP和IMP是客户段工具程序,它们既可以在可以客户端使用,也可以在服务端使用.
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用
IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件.
数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式.


导出功能
使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.
因此,使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.
CREATE DIRECTORY dump dir AS '/home/oracle/dump_dir';
GRANT READ,WIRTE ON DIRECTORY dump_dir TO public;
注意:这个目录赋权限给oracle用户
1,导出表
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp logfile=tab.log TABLES=dept,emp
2,导出方案
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=system,scott
3.导出表空间
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01,user02
4,导出数据库
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y


我们经常用到的是第二种
expdp system/**** directory=dump_dir dumpfile=ngboss_yueyang20130514.dmp logfile=expyueyang20130514.log schemas=ngboss_yueyang
对参数功能不了解请expdp -help查看


导入功能
和导出一样,先要建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.
CREATE DIRECTORY dump dir AS '/home/oracle/dump_dir';
GRANT READ,WIRTE ON DIRECTORY dump_dir TO public;
注意:这个目录赋权限给oracle用户
将dmp文件copy到对应的目录
同样有四种情况
1,导入表
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM
第一种方法表示将DEPT和EMP表导入到SCOTT方案中,第二种方法表示将DEPT和EMP表导入的SYSTEM方案中.
注意,如果要将表导入到其他方案中,必须指定REMAP SCHEMA选项.
2,导入方案
Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=scott REMAP_SCHEMA=scott:system
3,导入表空间
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01
4,导入数据库
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y


针对我们系统的特点有两种情况
1.导入库的用户名和表空间跟导出的库一致,例如从201上的ngboss_yueyang导入到196上的ngboss_yueyang用户上,两边的表空间名也一样
impdp system/**** directory=dump_dir dumpfile=ngboss_yueyang20130514.dmp logfile=impngboss_yueyang20130514.log schemas=ngboss_yueyang


2.导入库的用户名和表空间跟导出的库不一致
例如:从岳阳的生产库上导出的库导入到公司201上ngboss_yueyang用户
用户名和表空间名都不一样
impdp system/**** directory=dump_dir dumpfile=ngboss20130513.dmp logfile=impyueyang20130514.log remap_schema=ngboss:ngboss_yueyang remap_tablespace=ngboss_data:ngboss_yy_data,NGBOSS_DATA_CRM1:NGBOSS_YY_DATA_CRM1,NGBOSS_DATA_CRM2:NGBOSS_YY_DATA_CRM2,NGBOSS_DATA_HIST:NGBOSS_YY_DATA_HIST,NGBOSS_DATA_HIST_CRM:NGBOSS_YY_DATA_HIST_CRM,NGBOSS_INDX:NGBOSS_YY_INDX,NGBOSS_INDX_CRM:NGBOSS_YY_INDX_CRM,NGBOSS_WORK:NGBOSS_YY_WORK
对参数功能不了解请impdp -help查看


注意事项:用dba账户导出的dmp文件必须要用dba账户导入。
推荐文章
ORACLE数据库备份与还原命令 http://www.blogjava.net/paulwong/archive/2013/05/12/399172.html
========

Oracle数据库备份与还原操作具体步骤

http://www.cnblogs.com/newlooker/p/3564939.html
Oracle数据库导出操作


导入导出都要进行目录创建与授权。


在pl/sql里面编写也可以


select * from dba_directories(这个是查看创建的目录)


drop directory exp_dir(删除指定名称的目录)


create or replace directory expdp_dir as ‘E:/exp’


grant read,write on directory expdp_dir to public


如图(图片网上找的):


查询创建了那些子目录:SELECT * FROM dba_directories;


1.如下是bat命令导出


@echo off


echo 备份执行开始!


set filename=%date:~8,2% ::设置获取当前系统日期


expdp gdxaorcl/gdxadb2013@ECAMPUS schemas=gdxaorcl dumpfile=%filename%.dmp DIRECTORY=expdp_dir


::使用expdp导出,schemas指定用户名,dumpfile指定导出文件名称,DIRECTORY即指导到指定目录下


echo 备份执行完成!


2.Oracle数据库导入操作


数据库导入bat命令:


@echo


set /a tui = %date:~8,2%-1 ::设置系统日期前一天的数据库备份文件


impdp gdxaorcl/gdxadb2013@localhost/ecampus file=%tui%.dmp log=%tui%.log full=y TABLE_EXISTS_ACTION=replace ::(file指定要导入的备份文件注意:已经把%tui%.dmp复制到F:\app\Administrator\admin\ecampus\dpdump 下面了),log即日志文件,full=y ( 全库导出): 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据。replace参数先drop表,然后创建表,最后插入数据。
========

Oracle数据库备份、恢复及常见问题

http://www.cnblogs.com/Joanna-Yan/p/5070658.html 通常我们都是使用PL/sql Developer来对Oracle中的数据对象和数据进行管理。如果我们想方便快速还原或者部署Oracle到新机器上,怎么进行数据库的备份、导入恢复呢? 这里我们必须要考虑的:如何创建Oracle表空间、创建Oracle数据库;如何把Oracle对象、表数据导出到sql脚本中。 1、数据库备份 (1)导出数据库对象 Tools-->ExportUser Objects,选择需要导出的数据库对象,包括:表、序列、存储过程、视图、函数等。 (2)导出表数据 Tools-->Export Tables,导出数据到PL/sql数据库脚本中。 2、新建表空间和Oracle数据库 File-->New-->sql Window,打开sql窗口输入: 表空间、用户名都为IGSC。 create tablespace IGSC datafile 'E:\IGSOracle\IGSC.dbf' size 10240M; --DROP TABLESPACE IGSC INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; create user IGSC identified by IGSC default tablespace IGSC; grant connect,resource to IGSC; grant dba to IGSC; --Revoke dba from IGSC; 复制代码 点击执行sql。此时,数据库表空间、表结构、表数据齐全,可以开始迁移出一个完整的数据库了。 3、导入数据库及对象 Tools-->Import Tables,先导入数据库对象,再导入表数据,此时,你的表数据文件可以分几个文件导入也是不会报错的,因为表结构已经存在。 执行过程中会出现如下界面: 到这,整个oracle数据库的迁移工作已完成。注意:我们导出的Oracle对象和数据库默认还是原来Oracle数据库的表空间和数据库用户名。如果想在新的数据库服务器中指定不同的表空间和数据库用户,则需要替换生成sql脚本中的表空间和用户名的设置,并且第二步指定合理的表空间和数据库用户。 4、常见问题 (1)就是上面说的注意 我遇到的问题:新环境的数据库中存在IGS表空间,我导出的数据库文件IGSOracle.sql表空间默认也为IGS,结果在导入数据库对象到新表空间IGSC时,没有导入成功,却导入到了已存在的IGS表空间中。查看IGSOracle.sql: 发现导出的Oracle对象和数据库默认还是原来Oracle数据库的表空间和数据库用户名,我们要将表空间和用户名都改为IGSC,重新导入。 (2)ORACLE initialization or shutdown in progress 想删除不想要了的数据库和dbf文件,停掉服务后删除,重启服务启动数据库实例时报错。 解决: 开始-->输入,sqlplus /nolog sql> connect system/hope; ERROR: ORA-01033: ORACLE initialization or shutdown in progress【就是这个错误sql> connect sys/hope as sysdba 已连接。 sql> shutdown normal ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭sql> start mount SP2-0310: 无法打开文件 "mount.sql" sql> startup mount ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 183151492 bytes Database Buffers 423624704 bytes Redo Buffers 4259840 bytes 数据库装载完毕。 sql> alter database open; alter database open * 第 1 行出现错误: ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 8: 'C:\TYKM.DBF' sql> alter database datafile 8 offline drop;【8是数据文件中的8】 数据库已更改。 sql> alter database open;【一直循环这个语句,直至不再提示错误数据库已更改。 sql> shutdown normal 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭sql> startup ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 187345796 bytes Database Buffers 419430400 bytes Redo Buffers 4259840 bytes 数据库装载完毕。 数据库已经打开。 (3)ORA-1658 无法为表空间的段创建initial区  原因:表空间大小 解决:因为表数据比较大,我这里将步骤二中的size改为了10240M。 (4)PL/sql导入表数据报错Error reading file 当表数据文件很大时,选择Use Command Window方式导入报错。对大量数据的导入选择Use sql*Plus,前者不能读取大文件,后者可以。 ========

猜你在找的Oracle相关文章