欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

ORA-00704-ORA-01555

程序员文章站 2024-02-15 10:33:46
...

主机断电后,数据库启动报错ORA-00600: [kccpb_sanity_check_2] ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [1292931], [1188440], [0x000000000], [], [], [], []SUCCESS: diskgroup RACDB was dismounted 这个错误表示控制文件

主机断电后,数据库启动报错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
ORA-00704-ORA-01555
以数据文件头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

修改之后数据库成功打开