redo文件破坏使用隐含参数恢复数据库(二)

2014-11-24 18:36:13 · 作者: · 浏览: 1
dbf'


------上面恢复的时候看到数据库不是归档但是在恢复的时候他们要找归档日志


这时候我们不恢复了直接启动数据库(借助隐含参数)设置此参数之后,在数据库Open过程中,Oracle会跳过某些一致性检查,从而使数据库可能跳过不一致状态,Open打开


Oracle的隐含参数只应该在测试环境或者在Oracle Support的支持下使用


SQL> alter system set"_allow_resetlogs_corruption"=true scope=spfile;


System altered.



隐含参数:redo块损坏时


第一,如果损坏的是非当前redo文件并且已经归档我们可以使用


alter database clear logfile group 1清空该日志文件


第二,如果损坏的是非当前redo文件并且该文件组没有归档此时使用


alter database clear unarchived logfilegroup 1强行清空日志


第三,归档模式下当前日志的损坏有两种情况:


1、是数据库是正常关闭,日志文件中没有未决的事务需要实例恢复,当前日志组的损坏就可以直接用alter database clear unarchived logfile group n来重建。


2、是日志组中有活动的事务,数据库需要介质恢复,日志组需要用来同步,有两种补救办法


A:最好的办法就是通过不完全恢复,可以保证数据库的一致性,但是这种办法要求在归档方式下,并且有可用的备份


B:通过强制性恢复,但是可能导致数据库不一致。


SQL> shutdown immediate


ORA-01109: database not open




Database dismounted.


ORACLE instance shut down.


SQL> startup


ORACLE instance started.



Total System Global Area 314572800 bytes


Fixed Size 1219136 bytes


Variable Size 109053376 bytes


Database Buffers 197132288 bytes


Redo Buffers 7168000 bytes


Database mounted.


ORA-01589: must use RESETLOGS orNORESETLOGS option for database open




SQL> alter database open resetlogs;



Database altered.