完全恢复:是指介质恢复阶段(即执行recover命令时)必须应用所有的应该应用的重做记录:它们包括从数据文件头中的检查点RBA所指向的重做记录开始,一直到在线的当前的重做日志的最新一条
记录结束,不论该记录保存在归档日志中还是在线日志中,recover命令将尽可能地通过通道自动索取这些记录,恢复到“当前“时间点。
不完全恢复:介质恢复阶段不需要应用所有的重做记录,而只需一部分即从数据文件头中的检查点RBA所指向的重做记录开始,终点是任意一条RBA对应的重做记录。注意:数据库一定会丢失数据
场景1: 在线日志损坏并且实例没有崩溃的情况下可采用如下方式尝试恢复(lsof命令)
[root@gpsdb ~]# lsof | grep “delete”
oracle 9189 oracle 258u REG 8,16 52429312 77922307 /oradata/TRSEN/onlinelog/o1_mf_1_c9y734hg_.log (deleted)
[root@gpsdb ~]# ls -l /proc/9189/fd/258
lrwx—— 1 oracle oinstall 64 Jan 21 15:01 /proc/9189/fd/258 -> /oradata/TRSEN/onlinelog/o1_mf_1_c9y734hg_.log (deleted)
[root@gpsdb ~]# cp /proc/9189/fd/258 /oradata/TRSEN/onlinelog/o1_mf_1_c9y734hg_.log
场景2:一般情况在线日志损坏,实例在切换日志的过程中,都会crash了,此时就需要不完全恢复来open数据库(存在有效备份)
SQL> startup force;
ORACLE instance started.
Total System Global Area 6.0663E+10 bytes
Fixed Size 2268032 bytes
Variable Size 5637145728 bytes
Database Buffers 5.4895E+10 bytes
Redo Buffers 128344064 bytes
Database mounted.
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: