今天以前某客戶聯系我,說有個庫無法啟動,花了幾分鐘遠程看了一下,alert log信息如下:
Sun Mar 16 20:27:49 2014
Media Recovery Start
parallel recovery started with 7 processes
Sun Mar 16 20:27:49 2014
Recovery of Online Redo Log: Thread 1 Group 3 Seq 7363 Reading mem 0
Mem# 0 errs 0: /oracle/data/orclzjs/redo03.log
Sun Mar 16 20:28:01 2014
Errors in file /opt/app/oracle/admin/orclzjs/udump/orclzjs_ora_21469.trc:
ORA-00333: 重做日志讀取塊 67221 計數 6144 出錯
ORA-00312: 聯機日志 3 線程 1: '/oracle/data/orclzjs/redo03.log'
ORA-27072: 文件 I/O 錯誤
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4
Additional information: 67221
Additional information: 669184
Sun Mar 16 20:28:08 2014
Errors in file /opt/app/oracle/admin/orclzjs/udump/orclzjs_ora_21469.trc:
ORA-00333: 重做日志讀取塊 65173 計數 8192 出錯
ORA-00312: 聯機日志 3 線程 1: '/oracle/data/orclzjs/redo03.log'
ORA-27091: 無法將 I/O 排隊
ORA-27072: 文件 I/O 錯誤
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4
Additional information: 67221
Additional information: 669184
Sun Mar 16 20:28:19 2014
Media Recovery failed with error 333
ORA-283 signalled during: ALTER DATABASE RECOVER database ...
Sun Mar 16 20:30:16 2014
ALTER DATABASE RECOVER database until cancel
Sun Mar 16 20:30:16 2014
這是很典型的Oracle currnet redo logfile損壞的案例。 詢問發現該庫是強制關的,重啟主機後發現數據庫無法正常啟動了。
對於非歸檔的數據庫,在停庫之前,我們建議先進行alter system checkpoint,多切幾次redo,然後kill 掉相關進程後再去shutdown。 哪怕是shutdown abort,這樣風險都要小的多,至少強制open數據庫不會存在數據丟失。
當然,客戶這裡肯定是必然丟失數據的了。 通過隱含參數很容易的打開數據庫。
備注: 其實我們可以嘗試去修復redo的,如果alert log中提到的2個redo log block損壞不嚴重的話。