使用未寫入文檔參數"_ALLOW_RESETLOGS_CORRUPTION"進行崩潰恢復

什麼情況可能使用該參數               
 有些時侯可能你的庫處於非歸檔的模式下,而你的聯機重做日誌又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;               
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章