主机断电后,数据库启动报错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
以数据文件头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 |
修改之后数据库成功打开