由于测试环境早期的数据库参数文件命名不规范,导致维护人员在碰到redo log损坏时将redo log clear掉,结果发现启动了错误的DB,而该redo log 不该被clear的。

而后启动正确的DB後,出现无法的open的状况。处理过程如下

1、增加下列参数至Oracle启动文件:

_allow_resetlogs_corruption=TRUE

 2、recover database;

alter database open resetlogs;

3、一般情况下,open resetlogs后容易出现错误ora-600 [2662], ora-600 [2256],通过alter session set event '<事件名称><动作><跟踪项目><范围限定>’ 10015事件adjust scn号即可

如下:

ORA-00600: internal error code, arguments: [2256], [0], [3221225472], [5], [3880116460], [], [], []

 

sqlplus "/ as sysdba"

alter session set event '10015 trace name adjust_scn level 24';

level 24 数值的计算是通过ora-00600 报错信息计算出来的。(5+1)*4 =24,(第四个数+1)*4

通过 set event 增加scn 号:alter session set event ‘10015 trace name adjust_scn level 24’;

注:level 1为增进SCN 10亿 (1 billion) (1024*1024*1024),通常Level 1已经足够

24=24*1024*1024*1024=25769803776

Debugging event used to advance scn to 25769803776

然后可以通过select file#,CHECKPOINT_CHANGE# from v$datafile; 看到scn号就是25769803776

 

 

另外: 

增进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';

  参数的解释:

SQL> select KSPPDESC from X$KSPPI where ksppinm='_allow_resetlogs_corruption';

KSPPDESC
----------------------------------------------------------------
allow resetlogs even if it will cause corruption

 

 

posted on 2008-10-08 17:34  Alex.Zhang  阅读(830)  评论(0编辑  收藏  举报