由于服务器死机,只能重启服务器,重启服务器后启动数据库无法启动报如下错误:
alter database mount
Errors in file /u01/app/oracle/admin/SZXDB/udump/szxdb_ora_9233.trc:
ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [1449], [1448], [0x000000000], [], [], []
在数据库进行mount时出错,也就是数据库在读取控制文件时出错
Oracle对此错误的解释是:
[kccpb_sanity_check_2] indicates that the seq# of the last read block is higher than the seq# of the control file header block. This is indication of the lost write of the header block during commit of the previous cf transaction.
其解释是:kccpb_sanity_check_2 表示最后读取的控制文件块其 seq# 控制序列号大于控制文件头块的 seq# ,这是不应该出现的情况。这说明在最后执行提交的控制文件事务(CF Transaction)中,对于头块的写入丢失了。
这个错误如果只是存在于控制文件上,可以通过重建控制文件来解决,毫无疑问,这是最为简单的处理方式。
如果有备份,也可以从备份中恢复完好的控制文件,但是重建通常是很快捷的方式。
因为没有备份只能重建控制文件
因为数据库无法mount 所以控制文件无法进行trace 只能手写创建控制文件的SQL
CREATE CONTROLFILE REUSE DATABASE "sxzdb" NORESETLOGS
DATAFILE
'/oracle/oradata/system01.dbf',
'/oracle/oradata/undotbs01.dbf',
'/oracle/oradata/sysaux01.dbf',
'/oracle/oradata/users01.dbf',
'/oracle/oradata/tbsaddm.dbf'
NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'oracle/oradata/szxdb/redo01.log',
GROUP 2 'oracle/oradata/szxdb/redo02.log',
GROUP 3 'oracle/oradata/szxdb/redo03.log'
CHARACTER SET GBK;