ORA-00704-ORA-01555

主机断电后,数据库启动报错ORA-00600: [kccpb_sanity_check_2]

ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [1292931], [1188440], [0x000000000], [], [], [], []
SUCCESS: diskgroup RACDB was dismounted

这个错误表示控制文件存在一致现象,由于没有备份控制文件,只能手工去创建。
创建完成时在open数据时报错如下

ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 10 with name "_SYSSMU10$" too small
Error 704 happened during db open, shutting down database

出现这个错误一般情况下推荐scn即可,查看文件头scn
20141014_scn
以数据文件头scn+100000 去修改scn

SQL> SELECT 2482746156+100000 FROM dual;
 
2482746156+100000
-----------------
       2482846156
 
SQL> SELECT to_char('2482846156','xxxxxxxxxxxxxxx') FROM dual;
 
TO_CHAR('2482846156','XXXXXXXXXXXXXXX')
------------------------------------------
        93fd39cc
 
oradebug setmypid
oradebug dumpvar sga kcsgscn_
oradebug poke 0x38000F3D0 8 0x93fd39cc

但是在启动的时候还是报ORA-01555: snapshot too old: rollback segment number 10 with name “_SYSSMU10$” too small
通过10046观察启动时读取的数据块

PARSING IN CURSOR #5 len=52 dep=1 uid=0 oct=3 lid=0 tim=401202814297 hv=429618617 ad='a89b23a8'
SELECT ctime, mtime, stime FROM obj$ WHERE obj# = :1
END OF STMT
EXEC #5:c=0,e=2126,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=401202816808
WAIT #5: nam='db file sequential read' ela= 716 file#=1 block#=218 blocks=1 obj#=-1 tim=401202817826
WAIT #5: nam='db file sequential read' ela= 10885 file#=1 block#=219 blocks=1 obj#=-1 tim=401202828940
WAIT #5: nam='db file sequential read' ela= 7552 file#=1 block#=122 blocks=1 obj#=-1 tim=401202836649

发现这里最后一次读取的是file 1 block 122,这就可以去dump这个block 查看这个block的scn,

ALTER system dump datafile '+xxxxxxx/system.256.720013083' block 122;
发现这个block的scn为0x94a4c467
 
oradebug poke 0x38000F3D0 8 0x95a4c467

修改之后数据库成功打开

此条目发表在 未分类 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

评论功能已关闭。