日期:2014-05-16  浏览次数:20410 次

Oracle DB 执行用户管理的备份和恢复
? 说明用户管理的备份和恢复与服务器管理的备份和恢复之间的差异
? 执行用户管理的数据库完全恢复
? 执行用户管理的数据库不完全恢复


  • 备份和恢复的使用类型
数据库备份和恢复的类型包括:
? 用户管理的:不使用RMAN
– 使用OS 命令移动文件
– DBA 需要手动维护备份活动记录
? 服务器管理的:使用RMAN

有两种方法可用来恢复数据库。可以使用RMAN 并利用其自动恢复功能。它可以还原相应的文件,并使用非常少的命令使数据库恢复到当前状态。还可以手动进行恢复。这称为“用户管理的恢复”。用户管理的恢复需要使用OS 命令来移动文件,然后在SQL*Plus中发出恢复命令。
这两种方法都使用还原和恢复过程。


  • 执行用户管理的数据库备份
可以使用OS 命令创建数据文件的副本,从而备份数据库。操作过程取决于数据库是否处于ARCHIVELOG模式。如果是,则通过在复制表空间的数据文件之前将每个表空间置于备份模式,可以使数据库处于打开且可用状态。否则,在复制数据文件之前必须先关闭数据库。
归档模式下,手工热备份脚本:http://blog.csdn.net/rlhua/article/details/11850629
非归档模式下,手工冷备份脚本:http://blog.csdn.net/rlhua/article/details/11850445


  • 需要备份模式的场合
如果在执行数据操纵语言(DML) 语句期间写入某个块,则可能会影响该块的多个部分。对块的所有修改并不是同时发生的,因此在特定时间块可能会不一致。假设t
2表示介于块的不同部分的写入时间之间的时刻。如果在执行OS 复制命令期间,在t2时刻复制块,则该块被视为破碎的。此外,OS 复制命令不一定先复制文件头,因此在执行复制期间必须冻结文件头。
RMAN 可以设法处理此问题。如果读取的块是破碎的,则将不停地重复读取该块,直到该块一致为止。
但是,如果OS 命令(如Linux cp命令)正在复制数据文件,则不会将破碎块视为破碎块,且块的副本也不一致。为了补救这种情况,请将表空间甚至整个数据库置于备份模式。这样做的效果就是生成更多的重做。每个块的映像在修改之前会写入重做日志。然后,在恢复该数据文件中的块期间,可以使用破碎块的前像作为恢复基础,并将更多的重做数据应用于块。为了降低维护额外的重做数据带来的开销,Oracle 建议一次将一个表空间置于备份模式,同时复制其数据文件。


  • 确定要手动备份的文件
sys@TEST0924> select name from v$datafile;

NAME
----------------------------------------------------------------
/u01/app/oracle/oradata/test0924/system01.dbf
/u01/app/oracle/oradata/test0924/sysaux01.dbf
/u01/app/oracle/oradata/test0924/fla_tbs02.dbf
/u01/app/oracle/oradata/test0924/users01.dbf
/u01/app/oracle/oradata/test0924/example01.dbf
/u01/app/oracle/oradata/test0924/fla_tbs01.dbf
/u01/app/oracle/oradata/test0924/undotbs02.dbf
/u01/app/oracle/oradata/test0924/undotbs01.dbf
/u01/app/oracle/oradata/test0924/inventory01.dbf

9 rows selected.