rman实验之归档模式无备份,正常关机丢失当前联机重做日志文件的恢复
所有的备份软件都没有备份联机重做日志文件的说法。因为,它几乎时刻都在写,单独备份某个时刻,没啥意义。再者,归档日志在某种意义上,也是对联机重做日志的备份。对联机重做日志文件的保护,核心就两个字:冗余。包括:多路镜像、RAID方式、HA的运用(如DG)。
1)查看当前的联机重做日志文件
sys@ORCL> select group#,members,sequence#,status from v$log; GROUP# MEMBERS SEQUENCE# STATUS---------- ---------- ---------- ---------------- 1 2 5 CURRENT 2 2 4 INACTIVE 3 2 3 INACTIVEsys@ORCL> col member for a70 wrappedsys@ORCL> select group#,member from v$logfile where group#=1; GROUP# MEMBER---------- ---------------------------------- 1 /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8050hhn1_.log 1 /u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_8050hkdv_.l og
2)模拟文件丢失
sys@ORCL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@ORCL> host rm -rf /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8050hhn1_.logsys@ORCL> host rm -rf /u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_8050hkdv_.logsys@ORCL> startupORACLE instance started.Total System Global Area 419430400 bytesFixed Size 1219760 bytesVariable Size 155190096 bytesDatabase Buffers 260046848 bytesRedo Buffers 2973696 bytesDatabase mounted.ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_8050hhn1_.log'ORA-00312: online log 1 thread 1:'/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_1_8050hkdv_.log'
3)修改_ALLOW_RESETLOGS_CORRUPTION
因为没有备份,就只能强制恢复了。所以在这里我们需要修改一个隐藏的初始化参数:
sys@ORCL> alter system set "_ALLOW_RESETLOGS_CORRUPTION"=TRUE SCOPE=SPFILE;
设置该参数为true后,oracle在open时会跳过一些一致性的检查。
4)关闭并重新mount数据库
sys@ORCL> shutdown immediateORA-01109: database not openDatabase dismounted.ORACLE instance shut down.sys@ORCL> startup mountORACLE instance started.Total System Global Area 419430400 bytesFixed Size 1219760 bytesVariable Size 155190096 bytesDatabase Buffers 260046848 bytesRedo Buffers 2973696 bytesDatabase mounted.
5)执行不完全恢复
sys@ORCL> recover database until cancel;Media recovery complete.
6)通过open resetlogs打开数据库
sys@ORCL> alter database open resetlogs;Database altered.
7)善后处理
这是种走投无路的做法了。“邪魔外道的功夫”。以这种方式恢复,有可能导致数据库中数据的不一致,如已提交的未写入,未提交的已写入。在告警日志中,可能有报600错误了。强烈建议马上通过exp执行一次full exp,然后新建数据库,再通过imp导入之前导出的二进制文件。