簡單記錄一次ORA-00600: internal error code, arguments: [2662]

還不算暈發表於2014-07-04

接上一個,REDO報錯搞定後OPEN資料庫時又報錯ORA-00600: internal error code, arguments: [2662]。

原因是_ALLOW_RESETLOGS_CORRUPTION後resetlogs開啟資料庫,我們可能會由於SCN不一致而遭遇到ORA-00600 2662號錯誤( current scn 小於undo block scn)

現象及解決--這個沒拍照參考EYGLE的例子吧

Sun Dec 11 18:02:25 2005
Errors in file /opt/oracle/admin/conner/udump/conner_ora_13349.trc:
ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []
Sun Dec 11 18:02:27 2005

此時我們可以通過Oracle的內部事件來調整SCN:

增進SCN有兩種常用方法:

1.通過immediate trace name方式(在資料庫Open狀態下)

alter session set events 'IMMEDIATE trace name ADJUST_SCN level x';

2.通過10015事件(在資料庫無法開啟,mount狀態下)

alter session set events '10015 trace name adjust_scn level x';

注:level 1為增進SCN 10億 (1 billion) (1024*1024*1024),通常Level 1已經足夠。也可以根據實際情況適當調整。

LEVEL的計算規則:

ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []
ORA-00600: internal error code, arguments: [2662], [a], [b], [c], [d], [e], [], []
A CRUUENT SCN WRAP B--CURRENT SCN BASE C--DEPENDENT SCN WRAP D--DEPENDENT SCN BASE E--where present this is the dba where the dependent scn came from.
d< 1024*1024*1024=1073741824 時,需要的LEVEL為:c*4+1
d< 1024*1024*1024*2=1073741824*2 時,需要的LEVEL為:c*4+2

還可以通過設定隱含引數_minimum_giga_scn 快速遞增CURRENT SCN。2012年1月後的PSU中包含隱含引數_external_scnrejection_threshold_hours,此時隱含引數和10015事件會失效。
參考連結   周亮DBA實戰攻略  http://www.eygle.com/archives/2005/12/oracle_diagnostics_howto_deal_2662_error.html


相關文章