oracle非法關機引起redolog丟失,導致數據庫實例無法正常啓動(ORA-00313 ORA-00312 ORA-00376)

oracle 非法關機導致redolog丟失

主要遇到的錯誤

  • ORA-00313
  • ORA-00312
  • ORA-00376

背景

接到某實驗室老師的求助,說oracle方面的問題。到現場後,狀況如下:oracle某一實例無法啓動,報ORA-00313、ORA-00312錯誤,查看響應redolog,只有REDO01.LOG文件大小正常,REDO02.LOG和REDO03.LOG均爲0。

起因:前一天晚上9點處理完數據,正常關機走人。今天早上9點多,開機正常,操作數據庫時系統反應特別慢、卡,直接進行重啓。重啓以後無法進行該數據庫實例。要命的是,他!們!沒!有!做!備!份!這個數據庫裏存了他們項目組2個多月的工作量,ORZ。

所以啊,同學們,重要的數據多做備份沒壞處!

備份該實例的文件

shutdown immediate

關掉實例,把D:\ORACLE\PRODUCT\10.2.0\ORADATA\對應的實例的文件夾整個備份。

備份很重要,不管數據庫狀態正常還是不正常,第一步就是做備份!!!第一步就是做備份!!!第一步就是做備份!!!

正常啓動查看錯誤信息

#先徹底關閉
shutdown immediate
#啓動數據庫
startup

查看日誌狀態

select * from v$log;

到文件管理器上查看,2號和3號日誌文件的大小都爲0。

嘗試使用clear命令進行修復

startup;
alter database clear unarchived logfile group 3;

但是,因爲當前的日誌爲group3,所以修復失敗。

嘗試switch日誌文件

alter system switch logfile;

失敗。。。

進行強制恢復日誌文件

recover database until cancel

提示輸入藝恢復的日誌文件,輸入文件的路徑。

着手解決問題的時候,沒有進行截圖記錄,本文的截圖都是重複修復過程的時候記錄的。在這個環節裏頭,我按照提示輸入過group3的文件路徑,然後再cancel。但是按下圖來說,輸入修復文件路徑這個步驟可以不做,起碼對於我這個修復案例是沒有影響的。

alter database open resetlogs;

到此,group1~3對應文件大小恢復正常,數據庫實例正常起來了。

當時以爲得救了,可是~~~~ 當打開數據表的時候,提示ORA-00376,表都沒了(顯示不錯來),心裏涼了半截。心裏雖然相信數據庫數據文件應該是沒有損壞的,但是數據不能正常顯示出來,有也等於沒有。

檢查數據文件的狀態

select file#,name,status form v$datafile;

顯示3號文件offline

對offline的數據文件進行上線

alter database datafile 3 online;

失敗!進行3號數據文件恢復

recover datafile 3;

再次,對該文件上線,OK了!!!

重新進入數據庫,數據都在!當下立馬進行數據庫備份!

總結

  1. 數據庫服務器(或者別的服務器),只要業務正常跑着,儘量別關機(重啓)、,因爲你永遠不知道關機(重啓)後,他能不能起來。
  2. 數據庫服務器(特別是oracle),別運行與數據庫無關的程序,避免其他進程對數據庫進行造成影響。
  3. 最後一條也是最紅要的一條:數據一定要做好備份!數據一定要做好備份!數據一定要做好備份!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章