2014-07-27 Created By BaoXinjianhtml
1、摘要sql
Oracle 的备份与恢复有三种标准的模式,大体分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),数据库
而备份恢复又能够根据数据库的工做模式分为非归档模式 (Nonarchivelog-style)和归档模式(Archivelog-style),安全
一般,咱们把非归档模式称为冷备份,而相应的把归档模式称 为热备份。oracle
1. 逻辑备份 - 冷备份性能
利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。spa
2. 物理备份 - 冷备份操作系统
冷备份数据库是将数据库关闭以后备份全部的关键性文件包括数据文件、控制文件、联机REDO LOG文件,将其拷贝到另外的位置。日志
此外冷备份也能够包含对参数文件和口令文件的备份,可是这两种备份是能够根据须要进行选择的。orm
冷备份实际也是一种物理备份,是一个备份数据库物理文件的过程。
由于冷备份要备份除了重作日志之外的全部数据库文件,所以也被成为彻底的数据库备份。
3. 物理备份 - 热备份
热备份是在数据库运行的状况下,采用archive log mode方式备份数据库的方法。
热备份要求数据库处于archive log模式下操做,并须要大量的档案空间。
一旦数据库处于archive log模式,就能够进行备份了,当执行备份时,只能在数据文件级或表空间进行。
4. 备份方式分类
2、逻辑备份
如今先来介绍一下逻辑备份方式的方法,利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
1. 理论基础:Oracle提供的Export和Import具备三种不一样的操做方式(就是备份的数据输出(入)类型):
(1). 表方式(T) 能够将指定的表导出备份;
(2). 全库方式(Full) 将数据库中的全部对象导出;
(3). 用户方式(U) 能够将指定的用户相应的全部数据对象导出;
2. 在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,可是它必须做为System来完成增量的导入导出,并且只能是对整个数据库进行实施。
增量导出又能够分为三种类别:
(1). 彻底增量导出(Complete Export) 这种方式将把整个数据库文件导出备份;
exp system/manager inctype=complete file=20041125.dmp(为了方便检索和过后的查询,一般咱们将备份文件以日期或者其余有明确含义的字符命名)
(2). 增量型增量导出(Incremental Export) 这种方式将只会备份上一次备份后改变的结果;
exp system/manager inctype=incremental file=20041125.dmp
(3). 累积型增量导出(Cumulate Export) 这种方式的话,是导出自上次彻底增量导出后数据库变化的信息;
exp system/manager inctype=cumulative file=20041125.dmp
3. 一般状况下,DBA们所要作的,就是按照企业指定或者是本身习惯的标准(若是是本身指定的标准,建议写好计划说明),
通常,咱们采用广泛承认的下面的方式进行天天的增量备份:
4. 这样,咱们能够保证每周数据的完整性,以及恢复时的快捷和最大限度的数据损失。
恢复的时候,假设事故发生在周末,DBA可按这样的步骤来恢复数据库:
第一步:用命令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
一般状况下,DBA所要作的导入导出备份就算完成,只要科学的按照规律做出备份,就能够将数据的损失下降到最小,提供更可靠的服务。
另外,DBA最好对每次的备份作一个比较详细的说明文档,使得数据库的恢复更加可靠。
3、冷备份
冷备份在数据库出现问题是 只会恢复到备份时的那一时间点,备份完成到数据库出现问题须要恢复时的这一时间段内的全部新数据、修改记录都没法恢复。
热备份只能在归档模式下进行,冷备份不须要归档模式,归档模式会对系统性能尤为是磁盘I/O形成必定的影响,可是相对于归档的好处和安全性,相信大多数DBA都会选择归档模式。
一、优势:
二、缺点:
3. 案例以下
另文详细介绍 < http://www.cnblogs.com/eastsea/p/3898070.html >
4. 基本流程
当数据库能够暂时处于关闭状态时,咱们须要将它在这一稳定时刻的数据相关文件转移到安全的区域,
当数据库遭到破坏,再从安全区域将备份的数据库相关文件拷贝回原来的位置,
这样,就完成了一次快捷安全等数据转移。
因为是在数据库不提供服务的关闭状态,因此称为冷备份。
冷备份具备不少优良特性,好比上面图中咱们提到的,快速,方便,以及高效。一次完整的冷备份步骤应该是:
Step1. 首先关闭数据库(shutdown normal)
Step2. 拷贝相关文件到安全区域(利用操做系统命令拷贝数据库的全部的数据文件、日志文件、控制文件、参数文件、口令文件等(包括路径))
Step3. 从新启动数据库(startup),以上的步骤咱们能够用一个脚原本完成操做:
su – oracle < sqlplus /nolog
connect / as sysdba
shutdown immediate;
!cp 文件备份位置(全部的日志、数据、控制及参数文件);
startup;
exit;
Step4. 这样,咱们就完成了一次冷备份,请肯定你对这些相应的目录(包括写入的目标文件夹)有相应的权限。
Step5. 恢复的时候,相对比较简单了,咱们停掉数据库,将文件拷贝回相应位置,重启数据库就能够了,固然也能够用脚原本完成。
4、热备份
热备份支持在数据库不停机的状况下进行备份,冷备份是必须在数据库shutdown之后使用操做系统的命令对表空间进行拷贝进行的备份。
热备份适用于重要的数据库,好比7x24不能中断的生产系统,同时能够保证数据库在出现崩溃时结合归档日志能够恢复到任意一个时间点,不会形成数据丢失。
一、优势:
二、缺点:
3. 案例以下
另文详细介绍 < http://www.cnblogs.com/eastsea/p/3898091.html >
4. 基本流程
当咱们须要作一个精度比较高的备份,并且咱们的数据库不可能停掉(少量访问量)时,
这个状况下,咱们就须要归档方式下的备份,就是下面讨论的热备份。
热备份能够很是精确的备份表空间级和用户级的数据,因为它是根据归档日志的时间轴来备份恢复的,理论上能够恢复到前一个操做,甚至就是前一秒的操做。具体步骤以下:
Step1. 经过视图v$database,查看数据库是否在Archive模式下: SQL> select log_mode from v$database;
若是不是Archive模式
则设定数据库运行于归档模式下:SQL>shutdown immediate
SQL>startup mount
SQL> alter database archivelog;
SQL> alter database open;
若是Automaticarchival显示为“Enabled”,则数据库归档方式为自动归档。不然须要手工归档,或者将归档方式修改成自动归档,如:
正常shutdown数据库,在参数文件中init.ora中加入以下参数
SQL>shutdown immediate
修改init.ora:
LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(归档日值存放位置能够本身定义)
SQL>startup
而后,从新启动数据库,此时Oracle数据库将以自动归档的方式工做在Archive模式下。
其中参数LOG_ARCHIVE_DEST1是指定的归档日志文件的路径,建议与Oracle数据库文件存在不一样的硬盘,一方面减小磁盘I/O竞争,另一方面也能够避免数据库文件所在硬盘毁坏以后的文件丢失。
归档路径也能够直接指定为磁带等其它物理存储设备,但可能要考虑读写速度、可写条件和性能等因素。
注意:当数据库处在ARCHIVE模式下时,必定要保证指定的归档路径可写,不然数据库就会挂起,直到可以归档全部归档信息后才可使用。
另外,为建立一个有效的备份,当数据库在建立时,必须履行一个全数据库的冷备份,就是说数据库须要运行在归档方式,而后正常关闭数据库,备份全部的数据库组成文件。
这一备份是整个备份的基础,由于该备份提供了一个全部数据库文件的拷贝。(体现了冷备份与热备份的合做关系,以及强大的能力)
Step2. 备份表空间文件:
(1). 首先,修改表空间文件为备份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;
(2).而后,拷贝表空间文件到安全区域 !CP tablespace_name D_PATH;
(3).最后,将表空间的备份模式关闭 ALTER TABLESPACE tablespace_name END BACKUP;
Step3. 对归档日志文件的备份:
中止归档进程-->备份归档日志文件-->启动归档进程
若是日志文档比较多,咱们将它们写入一个文件成为一个恢复的参考:$ files `ls <归档文件路径>/arch*.dbf`;export files
Step4. 备份控制文件:
SQL> alter database backup controlfile to 'controlfile_back_name(通常用2004-11-20的方式)' reuse;
固然,咱们也能够将上面的东东写为一个脚本,在须要的时候执行就能够了:
脚本范例:
su – oracle < sqlplus /nolog
connect / as sysdba
ALTER TABLESPACE tablespace_name BEGIN BACKUP
!CP tablespace_name D_PATH
ALTER TABLESPACE tablespace_name END BACKUP
alter database backup controlfile to 'controlfile_back_name(通常用2004-11-20的方式)' reuse;
!files `ls <归档文件路径>/arch*.dbf`;export files
热备份的恢复,对于归档方式数据库的恢复要求不但有有效的日志备份还要求有一个在归档方式下做的有效的全库备份。
归档备份在理论上能够无数据丢失,可是对于硬件以及操做人员的要求都比较高。
在咱们使用归档方式备份的时候,全库物理备份也是很是重要的。
归档方式下数据库的恢复要求从全备份到失败点全部的日志都要无缺完好。
恢复步骤:LOG_ARCHIVE_DEST_1
shutdown数据库。
将全备份的数据文件放到原来系统的目录中。
将全备份到失败点的全部归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。
利用sqlplus登录到空实例。(connect / as sysdba)
而后 startup mount
set autorecovery on
recover database;
alter database open;
Thanks and Regards