什麼情況可能使用該參數
有些時侯可能你的庫處於非歸檔的模式下,而你的聯機重做日誌又currupted,你的數據文件不能完成完全的恢復。而這時當你試圖打開數據庫時,oracle提示你用resetlogs選項,當你使用該選項時oracle又不允許你使用該選項,總之你想打開數據庫,可就是打不開。
1、最好做一個物理的庫的全備
2、使用sqlplus 啓動庫至mount
sqlplus /nolog
sql>connect internal
sql>startup mount
3、確保所有的數據文件都處於"END BACKUP"狀態
sql>set pages 0 feedback off lines 132
sql>spool alter_df.sql
sql>SELECT 'alter database datafile '||file_name||' END BACKUP;' from v$datafile;
sql>spool off
sql>@alter_df.sql
4、試着打開數據庫
sql>alter database open;
如數據庫成功打開,餘下的都不需要做了,到此爲止
5、如果你在打開時被要求進行恢復,使用"UNTIL CANCEL"這種進行恢復,然後再發出ALTER DATABASE OPEN RESETLOGS這個命令
sql>recover database until cancel;
sql>alter database open resetlogs;
6、如果數據庫仍不能打開,把庫down掉
sql>shutdown immediate
7、在init<sid>.ora中加入如下參數
_allow_resetlogs_corruption=TRUE
8、執行如下語句
sql>connect internal
sql>startup mount
sql>@alter_df.sql
sql>alter database open
9、如在alter database open時仍舊報錯,使用until cancel恢復
sql>recover database until cancel;
sql>alter database open resetlogs;
10、經過"9",數據庫一定被打開了,數據庫被打開後,馬上執行一個full export
11、down掉庫,去掉_all_resetlogs_corrupt參數
12、重建庫
13、import並完成恢復
14、建議執行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;