需要不完全恢复的情况
完全恢复由于归档日志文件丢失而失败
丢失了数据文件和一个或多个未归档重做日志文件
使用控制文件的备份打开或恢复数据库
在下列情况下,通常需要执行整个数据库的不完全备份:
重做日志丢失:重做日志未进行镜像,并且在某个重做日志归档前丢失了该日志以及数据文件。在丢失的重做日志之后无法继续执行恢复。
归档丢失:完全恢复操作由于归档日志损坏或丢失而失败。应用归档日志之前,恢复只能完成到过去某个时间。
备份控制文件:使用控制文件的备份而不是当前副本来打开数据库。在下列情况下需要使用控制文件备份:
所有控制文件均已丢失,无法重新创建控制文件,但存在控制文件的二进制备份。对控制文件进行镜像(到不同磁盘上)并保持 CREATE CONTROLFILE 语句的当前文本版本可以减少必须使用这种方法的机会。
要将数据库恢复至过去某一时间点,且还原的数据库与当前数据库的结构不同。
使用控制文件的旧副本执行恢复或打开数据库时,必须在 RECOVER DATABASE 命令中指定 USING BACKUP CONTROLFILE 子句。
不完全恢复的类型
基于时间的恢复
使用 UNTIL TIME 子句,可以指定数据库应恢复到的过去的时间点。提交了直至指定时间的所有更改后恢复将终止。用户对数据进行了不必要的更改或删除了重要的表时,如果知道错误操作的大概时间,就可以使用此方法。如果您立即收到了系统通知,则恢复时间和数据丢失可降到最低。经过严格测试的程序、安全性和过程可以避免进行这种类型的恢复。
基于取消的恢复
在恢复过程中,可以在恢复提示符(而不是日志文件名)下输入 CANCEL 来终止恢复。可以在下列情况下使用此方法:
当前重做日志文件或组被损坏,无法用于恢复。进行镜像可以避免进行这种类型的恢复。
丢失了进行恢复所需的归档重做日志文件。经常备份以及制定多个归档目标可以避免进行这种类型的恢复。
基于更改的恢复
将 UNTIL CHANGE 子句用于用户管理的备份和将 UNTIL SCN 子句用于 RMAN 管理的备份,可以指定要恢复的最后一次提交更改的系统更改号 (SCN)。提交了直至指定 SCN 的所有更改后恢复将终止。可以在分布式环境中恢复数据库时使用此方法。还可以使用 UNTIL RESTORE POINT 语法并为 SCN 指定一个别名,即还原点。本课的后续部分将对还原点进行介绍。
日志序列恢复
使用 RMAN 管理的备份,可以通过 UNTIL SEQUENCE 子句指定要用于数据库恢复的最后日志序列号。在应用了直至(但不包括)指定的日志文件的所有日志文件后,恢复将终止。