使用未寫入文檔參數“_ALLOW_RESETLOGS_CORRUPTION”進行崩潰恢復經典
2024-07-21 02:35:30
供稿:網友
什么情況可能使用該參數
有些時侯可能你的庫處于非歸檔的模式下,而你的聯機重做日志又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.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;