資料庫每隔一段時間自動down掉的錯誤解決

lnwxzyp發表於2011-10-17
    前幾天解決了一個市州資料庫每隔一段時間就down掉的問題,開始局方的人反映從前一天下午開始就出現這個錯誤了,手動啟動了幾次,但是過不了多久就自動down掉,於是趕緊ssh登上去檢視日誌,在alert log當中發現了大量的ORA-00600錯誤

Thu Oct 13 11:16:21 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:19:16 CST 2011

SMON: Restarting fast_start parallel rollback

Thu Oct 13 11:19:16 CST 2011

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc

Thu Oct 13 11:19:17 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:19:18 CST 2011

SMON: Parallel transaction recovery slave got internal error

SMON: Downgrading transaction recovery to serial

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc

Thu Oct 13 11:19:18 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

ORACLE Instance bzdtbb (pid = 8) - Error 600 encountered while recovering transaction (25, 15) on object 605964.

Thu Oct 13 11:19:19 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:21:52 CST 2011

SMON: Restarting fast_start parallel rollback

Thu Oct 13 11:21:52 CST 2011

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc

Thu Oct 13 11:21:53 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_p000_15911.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:21:54 CST 2011

SMON: Parallel transaction recovery slave got internal error

SMON: Downgrading transaction recovery to serial

System State dumped to trace file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc

Thu Oct 13 11:21:54 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_smon_15739.trc:

ORA-00600: internal error code, arguments: [4142], [65545], [], [], [], [], [], []

Thu Oct 13 11:21:55 CST 2011

Errors in file /u01/app/oracle/admin/bzdtbb/bdump/bzdtbb_pmon_15727.trc:

ORA-00474: SMON process terminated with error

Thu Oct 13 11:21:55 CST 2011

PMON: terminating instance due to error 474

Instance terminated by PMON, pid = 15727

從日誌當中可以看出來,SMON程式遇到錯誤而終止,我們知道,如果SMON程式終止的話資料庫例項也會隨之終止,因此我們看到最終是由PMON程式終止了例項,期間有大量的ORA-00600[4142]錯誤,其中還有一段“Error 600 encountered while recovering transaction (25, 15) on object 605964.”
馬上登陸到support.oracle.com上去查ORA-00600錯誤,但是裡面列舉出來的錯誤情況跟我們資料庫遇到的情況並不一致,因此所提供的bug補丁也不敢隨便拿來用。這樣查了一會沒有找到合適的解決辦法,而資料庫還是一樣,手動啟動之後隔十幾分鍾就又自動down掉,局方開始催促,因為一直出問題,因此有大量的資料處理需求就被延誤下來,又仔細看了一下日誌,查詢資料,最終確認是回滾段造成的錯誤,解決方法是先遮蔽掉UNDO表空間回滾段的_SYSSMU25$,然後建立新的undo表空間並設定為預設,然後刪除有問題的undo表空間,即可。
由於資料庫當前沒有使用spfile,因此需要先shutdown資料庫,然後根據$ORACLE_BASE/admin/$ORACLE_SID/pfile/ 目錄下的init.ora檔案來建立spfile,然後使用新生成的的spfile啟動資料庫(生成spfile之前最好先備份原有的spfile檔案),啟動後將遮蔽回滾段的資訊寫入spfile 
alter system set "_offline_rollback_segments"="_SYSSMU25$" scope=spfile;
alter system set "_corrupted_rollback_segments"="_SYSSMU25$" scope=spfile;
然後shudown資料庫,然後啟動,在啟動的時候 跟蹤一下alert log,發現在啟用這兩個內部引數遮蔽掉之後,資料庫日誌當中就沒有異常的錯誤資訊了。 然後新建一個undo表空間並設為預設,讓局方檢查一下是否有重要資料需要恢復,在得到否定的回答後刪除初始的undo表空間,至此問題得到解決。

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

相關文章