System表空間在非歸檔模式下丟失怎麼辦

gholay發表於2014-03-14
System表空間在非歸檔模式下丟失怎麼辦?
思路 :
第一步:
全備資料庫

第二步:
試著用備份還原,然後忽略一致性開啟資料庫。

如果不能,則把所有的還原,啟動即可。


操作:

shutdown immediate

刪除system表空間。
rm -rf ....

startup
此時啟動資料庫會報錯,說system表空間丟失


將損壞之前全備的system表空間複製到system表空間的位置
SQL>ho cp /u02/orcl/system01.dbf /u01/oracle/oradata/orcl/

開啟資料庫:
SQL>alter database open ;
此時會報錯,說介質需要恢復。

解決辦法:
SQL>recover database ;
注:如果丟失的切換日誌次數比較多是恢復不了的。因為日誌檔案不足以來還原。

然後開啟資料庫:
SQL>alter database open ;


如果是丟失的切換日誌次數比較多。
SQL>recover database ;
這個命令是恢復不了的。
使用recover database ;
此時會提示輸入 ,輸入 cancel 來恢復到此為止。

這個時候可以加隱藏引數,不去檢驗一致性了。
alter system set "_allow_resetlogs_corruption"=true scope=spfile ;

SQL>startup force 
這時候也會提示資料檔案system不存在。

使用如下命令來恢復 
SQL>recover database until cancel ;

SQL>alter database open resetlogs ;
--此時會說會話中斷 , 重新連線一下就可以了。

最後取消隱藏引數:
alter system set "_allow_resetlogs_corruption"=false  scope=spfile ;
alter system reset "_allow_resetlogs_corruption" scope=spfile sid='*' ;
這種方法會丟失部分資料。





















來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1120695/,如需轉載,請註明出處,否則將追究法律責任。

相關文章