接上一个,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參考链接 周亮DBA实战攻略 http://www.eygle.com/archives/2005/12/oracle_diagnostics_howto_deal_2662_error.html此时我们能够通过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+1d< 1024*1024*1024*2=1073741824*2 时,须要的LEVEL为:c*4+2
还能够通过设置隐含參数_minimum_giga_scn 高速递增CURRENT SCN。2012年1月后的PSU中包括隐含參数_external_scnrejection_threshold_hours,此时隐含參数和10015事件会失效。