RMAN作为一个管理备份和恢复备份的Oracle实用程序,在使用它对数据库执行备份后,如果数据库发生故障,则可以通过RMAN使用备份对数据库进行恢复。在使用RMAN进行数据恢复时,它可以自动确定最合适的一组备份文件,并使用该备份文件对数据库进行恢复。根据数据库在恢复后运行状态的不同,Oracle数据库恢复可以分为完全数据库恢复和不完全数据库恢复。完全数据库恢复使数据库恢复到出现故障的时刻,即当前状态;不完全数据库恢复则使数据库恢复到出现故障的前一时刻,即过去某一时刻的数据库同步状态。
(1)恢复处于NOARCHIVELOG模式的数据库
当数据库处于NOARCHIVELOG模式时,如果出现介质故障,则在最后一次备份之后对数据库所做的任何操作都将丢失。通过RMAN执行恢复时,只需要执行RESTORE命令将数据库文件修复到正确的位置,然后就可以打开数据库。也就是说,对于处于NOARCHIVELOG模式下的数据库,管理员不需要执行RECOVER命令。
另外,在备份NOARCHIVELOG数据库时,数据库必须处于一致的状态,这样才能保证使用备份信息恢复数据后,各个数据文件是一致的。下面通过一个实例来讲解在NOARCHIVELOG模式下备份和恢复数据库所需要的完整操作步骤。
【例8.10】 在NOARCHIVELOG模式下备份和恢复数据库,代码和操作步骤如下。
①使用具有SYSDBA特权的账号登录到SQL∗Plus.并确认数据库处于NOARCHIVELOG模式,代码如下。
②输入EXIT命令,退出SQLPlus。
③运行RMAN,并连接到目标数据库,代码如下。
④在RMAN中关闭数据库,然后启动数据库到MOUNT状态,代码如下。
⑤在RMAN中输入下面的命令,以备份整个数据库,代码如下。
⑥备份完成后,打开数据库。
⑦在有了一份数据库的一致性备份后,为了模拟一个介质故障,将关闭数据库并删除USERS01.DBF文件。需要注意,介质故障通常是在打开数据库时发生的。如果想要通过删除数据文件来模拟介质故障,则必须关闭数据库,因为操作系统不能删除目前正在使用的文件。
⑧删除数据文件USERS01.DBF后启动数据库,因为Oracle无法找到数据文件USERS01.DBF,所以会出现错误信息。
⑨当RMAN使用备份、恢复数据库时,必须使目标数据库处于MOUNT状态才能访问控制文件。当设置数据库到MOUNT状态后,就可以执行RESTORE命令了,让RMAN决定最新的有效备份集,并使用备份集修复损坏的数据库文件,代码如下。
⑩恢复数据库后,执行ALTER DATABASE OPEN命令打开数据库,代码如下。
(2)恢复处于ARCHIVELOG模式的数据库
恢复处于ARCHIVELOG模式的数据库,与恢复NOARCHIVELOG模式的数据库相比,基本的区别是恢复处于ARCHIVELOG模式的数据库时,管理员还需要将归档重做日志文件的内容应用到数据文件上。在恢复过程中,RMAN会自动确定恢复数据库所需要的归档重做日志文件。下面通过一个实例来讲解如何恢复处于ARCHIVELOG模式下的数据库。
【例8.11】 恢复处于ARCHIVELOG模式下的数据库,代码和操作步骤如下。(www.daowen.com)
①确认数据库处于ARCHIVELOG模式下,可以通过V$DATABASE视图查看LOG_MODE列来确认。
②启动RMAN,并连接到目标数据库。
③在RMAN中输入如下命令,对表空间users进行备份,代码如下。
④模拟介质故障,关闭目标数据库,并通过系统删除表空间users对应的数据文件。
⑤启动数据库到MOUNT状态。
⑥运行下面的命令恢复表空间users,代码如下。
⑦恢复完成后打开数据库,可以使用ALTER DATABASE OPEN命令进行。
另外,在恢复ARCHIVELOG模式的数据库时,可以使用如下形式的RESTORE命令修复数据库。
①RESTORE TABLESPACE:修复一个表空间。
②RESTORE DATABASE:修复整个数据库中的文件。
③RESTORE DATAFILE:修复数据文件。
④RESTORE CONTROLFILE TO:将控制文件的备份修复到指定的目录。
⑤RESTORE ARCHIVELOG ALL:将全部的归档日志复制到指定的目录,以便后续的RECOVER命令对数据库实施修复。
使用RECOVER命令恢复数据库的语法形式如下。
①RECOVER DATABASE:恢复整个数据库。
②RECOVER DATAFILE:恢复数据文件。
③RECOVER TABLESPACE:恢复表空间。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。