今天關閉伺服器的時候出現莫名原因導致資料庫無法shutdown,只好利用強制命令shutdown abort;但隨便Oracle資料庫無法開啟了,總是報“ORA-03113: 通訊通道的檔案結尾”錯誤,分析可能由於資料庫立即關閉,導致檔案狀態可能不一致,因為正常關閉資料庫會同步校正各檔案,使得重新啟動的時候檔案時間點一致並且不用進行崩潰恢複,不得不進行下面的恢複,建議大家以後在利用abort選項時,先在os上觀察IO狀況,在IO值為0或接近0的時候再強制關閉,以避免不可預料的錯誤。(我的環境是Oracle 11g,CentOS 5.4)
SQL> startup mount;
ORACLE 常式已經啟動。
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 637536288 bytes
Database Buffers 188743680 bytes
Redo Buffers 6606848 bytes
資料庫裝載完畢。
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-03113: 通訊通道的檔案結尾
進程 ID: 4272
會話 ID: 125 序號: 5
SQL> conn ' / as sysdba'
已串連到空閑常式。
SQL> startup mount
ORACLE 常式已經啟動。
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 637536288 bytes
Database Buffers 188743680 bytes
Redo Buffers 6606848 bytes
資料庫裝載完畢。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------------- ------------- -------------- ------------ --------------
1 1 97 52428800 512 1 NO
INACTIVE 12980317 07-9月 -10 12988303 07-9月 -10
3 1 99 52428800 512 1 NO
CURRENT 12991762 07-9月 -10 2.8147E+14
2 1 98 52428800 512 1 NO
INACTIVE 12988303 07-9月 -10 12991762 07-9月 -10
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-01139: RESETLOGS 選項僅在不完全資料庫恢複後有效
SQL> recover database until time '2010-09-09 1:45:02';
完成介質恢複。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> shutdown
資料庫已經關閉。
已經卸載資料庫。
ORACLE 常式已經關閉。
SQL> startup
ORACLE 常式已經啟動。
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 637536288 bytes
Database Buffers 188743680 bytes
Redo Buffers 6606848 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>