ORA-00600 [2662] , 怎麼計算 adjust SCN level

tolywang發表於2011-07-19

通常我們對於ORA-600 [2662]錯誤的解決是透過10015 ADJUST_SCN事件來增進current SCN以達到比資料檔案中最大的SCN還要大的目的,這樣才可能啟動資料庫。

eygle的例子中報錯資訊如下:
ORA-00600: internal error code, arguments: [2662], [0], [547743994], [0], [898092653], [8388617], [], []

這個報錯引數的含義在metalink中如此描述的:
Arg [a] Current SCN WRAP
Arg [b] Current SCN BASE
Arg [c] dependent SCN WRAP
為了儲存更大的SCN值,當SCN BASE到足夠大並開始重置的時候,SCN WRAP將加1。
Arg [d] dependent SCN BASE
Arg [e] Where present this is the DBA where the dependent SCN came from.
也就是Arg [d] 的值是從哪個block中找到的,通常是一個data block address。

透過這幾個引數根據一定的規則可以計算出我們需要的level。計算規則如下:
1. Arg [c] *4得出一個數值,假設為V_Wrap
2. 如果Arg [d]=0,則V_Wrap值為需要的level
Arg [d] < 1073741824,V_Wrap+1為需要的level
Arg [d] < 2147483648,V_Wrap+2為需要的level
Arg [d] < 3221225472,V_Wrap+3為需要的level

仍舊看eygle的案例。
Arg [c] *4 = 0 * 4 = 0
Arg [d] = 898092653 < 1073741824
所以level = 0+1 = 1
因此其實eygle不需要增進level 10,level 1就應該足夠了。

  1. alter session set events 10015 trace name adjust_scn level 1;

看另外一個例子的報錯資訊,我們再來計算一次。
ORA-00600: internal error code, arguments: [2662], [0], [2179133], [8656], [70114056], [33855201], [], []

Arg [c] *4 = 8656 * 4 = 34624
Arg [d] = 70114056 < 1073741824
所以level = 34624 + 1 = 34625
因此在這個例子中我們應該執行

  1. alter session set events IMMEDIATE trace name ADJUST_SCN level 34625;

 

使用隱含引數_ALLOW_RESETLOGS_CORRUPTION後resetlogs開啟資料庫後,我們說很多時候你會遇到ORA-00600 2662號錯誤,這個錯誤的含義是:

A data block SCN is ahead of the current SCN.
The ORA-600 [2662] occurs when an SCN is compared to the dependent SCN
stored in a UGA variable.
If the SCN is less than the dependent SCN then we signal the ORA-600 [2662]
internal error.

在測試中,很容易模擬這個錯誤:

Thu Oct 20 10:38:27 2005
SMON: enabling cache recovery
Thu Oct 20 10:38:27 2005
Errors in file /opt/oracle/admin/conner/udump/conner_ora_31607.trc:
ORA-00600: internal error code, arguments: [2662], [0], [897694446], [0], [897695488], [8388697], [], []
Thu Oct 20 10:38:28 2005
Errors in file /opt/oracle/admin/conner/udump/conner_ora_31607.trc:
ORA-00600: internal error code, arguments: [2662], [0], [897694446], [0], [897695488], [8388697], [], []

如果SCN相差不多,可以透過多次重起資料庫解決。

也可以透過內部事件:
alter session set events ‘IMMEDIATE trace name ADJUST_SCN level 1′;
來解決。

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

相關文章