主机断电后,数据库启动报错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 failureora-00704: bootstrap process failureora-00604: error occurred at recursive sql level 1ora-01555: snapshot too old: rollback segment number 10 with name _syssmu10$ too smallerror 704 happened during db open, shutting down database
出现这个错误一般情况下推荐scn即可,查看文件头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 setmypidoradebug 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# = :1end of stmtexec #5:c=0,e=2126,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=401202816808wait #5: nam='db file sequential read' ela= 716 file#=1 block#=218 blocks=1 obj#=-1 tim=401202817826wait #5: nam='db file sequential read' ela= 10885 file#=1 block#=219 blocks=1 obj#=-1 tim=401202828940wait #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
修改之后数据库成功打开
原文地址:ora-00704-ora-01555, 感谢原作者分享。
