Oracle备份与恢复:
逻辑备份 [导出(Export)导入(Import)]
物理备份 [冷备份(NoArchiveLog-Style)热备份--归档模式(ArchiveLog-Style)]
优点:
逻辑备份导入导出方式:能够针对行对象进行备份,能够跨平台实施备份操作并迁移数据,数据库可以
不关闭.
物理冷备份:备份和恢复迅速,容易达到低维护,高安全的效果执行效率高.
物理热备份:(理论上)可以根据日志回溯到上一秒的操作,备份恢复更为精确,而且不需要送闭数据
库。
缺点:
逻辑备份导入导出方式:导出方式并不能保护介质失效,它仅仅是逻辑上的备份。
物理冷备份:单独使用时,只能提供到某一时间点上的恢复不能按表和按用恢复而肯必须关闭数据库。
物理热备份:过程较其他方式复杂,需要不小的空间存放归档文件,操作不允许失误,否则恢复不能进
行。
使用时机:
逻辑备份导入导出方式:一般用于有规律的日常备份.
物理冷备份:数据库可能暂时关闭,或者需要和热备份配合使用时。
物理热备份:数据访问量小,或需要实现表空间及库文件级的备份,或需要更高精确备份时。
逻辑备份方式的方法:
现在先来介绍一下逻辑备份方式的方法,利用Export可将数据从数据中提取出来,利用Import则可将提
取出来的数据送回到Oracle数据库中去。
理论基础:Oracle提供的Export和Import具有三种不同的操作方式(就是备份的数据输出/入类型):
1.表方式(T) 可以将指定的表导出备份;
2.全库方式(Full) 将数据库中的所有对象导出;
3.用户方式(U) 可以将指定的用户相应的所用数据对象导出;
在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,但是它必须作为System来完
成增量的导入导出,而且只能是对整个数据库进行实施。增量导出以可以分为三种类型:
1.完全增量导出(Complete Export)
这种方式将把整个数据库文件导出备份;exp system/manager inctype=complete file=20070911.dmp(
为了方便检索和事后的查询,通常我们将备份文件以日期或者其他有时确含义的字符命名)
2.增量型增量导出(Incremental Export)
这种方式将只会备份上一次备份后改变的结果;exp system/manager inctype=incremental
file=20070911.dmp
3. 累积型增量导出(Cumulate Export)
这种方式的是导出自上次完全增量导出后数据库变化的信息。exp system/manager
inctype=cumulative file=20070911.dmp
通常情况下,DBA们所要做的,就是按照企业指定或者是自己习惯的标准(如果是自己指定的标准,建
议写好计划说明),一般我们采用普遍认可的下面的方式进行每天的增量备份:
Mon:完全备份(A)
Tue:增量导出(B)
Wed:增量导出(C)
Thu:增量导出(D)
Fri:累计导出(E)
Sat:增量导出(F)
Sun:增量导出(G)
这样我们可以保证每周数据的完整性,以及恢复时的快捷和最大限度的数据损失。恢复的时候,假设事
故发生在周末,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最好对每次的备份做一个比较详细的说明文档,使得数
据库的恢复更加可靠。
物理备份之冷备份(条件--NonArchiveLog):
当数据库可以暂时处于关闭状态时,我们需要将它在这一稳定时刻的数据相关文件转移到安全的区域,
当数据库遭到到破坏,再从安全区域将备份的数据库相关文件拷贝回原来的位置,这样就完成了一次快
搜安全等数据转移。由于是在数据库不揭供服务的关闭状态所以称为冷备份。冷备份具有很多优良特性
,比如上面图中我们提到的,快速,方便,以用高效。一次完整的冷备份步骤应该是:
1.首先关闭数据库(shutdown normal)
2.拷贝相关文件到安全区域(利用操作系统命令拷贝数据库的所用的数据文件、日志文件,控制文件、
参数文件、口令文件等(包括路径))
3.重新启动数据库(startup)
以上的步骤我们可以用一个脚本来完居操作:
su-oracle<sqlplus/nolog
connet/as sysdba
shutdown immediate;
!cp 文件 备份位置(所有的日志、数据、控制用参数文件);
startup;
exit;
这样我们就完成了一次冷备份,请确定你对这些相应的目录(包括写入的目标文件夹)相应的权限。
恢复时候,相对比较简单了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就可以了,当然也
可以用脚本来完成。
物理备份之热备份:(条件--ArchiveLog)
当我们需要做一个精度比较讷的备份,而且我们的数据库不可能停掉(少许访问量)时,这个情况下,
我们就需要归档方式下的备份,就是下面计论的热备份。热备份可以非常精确的备份表空间级和用户级
的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一
秒的操作。具体步骤如下:
1.通过视图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”,则数据库归档方式为自动归档。否遇需要手工归档,或者
将归档方式修改为自动归档,如:
正常shoutdown数据库,在参数文件中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模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到
能够归档所有归档信息后才可能使用。另外为创建一个有效的备份,当数据库在创建时,必须履行一个
全数据库的冷备份,就是说数据库需要运行归档方式,然后正常关闭数据库,备份所有的数据库组成文
件。这一备份是整个备份的基础,因为该备份提供了一个所用数据库文件的拷贝。(体现了冷备份与热
备份的合作关系,以级强大的能力)
2.备份表空间文件:
A.首先修改表空间文件为备份模式 ALTER TABLESPACE TABLESPACE_NAME END BACKUP;
B.然后拷贝表空间文件到安全区域!CP tablespace_name D_PATH;
C.最后将表空间的备份模式关闭 ALTER TABLESPACE tablespace_name END BACKUP;
3.对归档日志文件的备份:
停止归档进程式-->备份归档日志文件-->启动归档进程
如果日志文档比较多,我们将它们写入一个文件成为一个恢复的参考: $files ls <归档文件路径
>/arch*.dbf;export files
4.备份控制文件:
SQL>alter database backup controlfile to 'controlfile_back_name(一般用2007-09-11的方式)'
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(一般用2007-09-11的方式)'
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;