客户端程序无法连接数据库(数据库版本为10205),连接服务器发现数据库已宕机报以下错误信息

ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [7362],

[7361], [0x000000000], [], [], [], []


根据http://dreamsanqin.blog.51cto.com/845412/1213861链接所示处理方法,启动数据库至挂载状态。发现根本无法挂载数据库。

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1207959552 bytes
Fixed Size                  2095864 bytes
Variable Size             369100040 bytes
Database Buffers          822083584 bytes
Redo Buffers               14680064 bytes
ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [7362],
[7361], [0x000000000], [], [], [], []
SQL>


凌晨的rman备份没有备份成功,归档日志全部已删除。于是根据1天前控制文件的备份,恢复数据库控制文件并挂载数据库。然后重建控制文件打开数据库,如下:


RMAN> restore controlfile from '/home/oracle/o1_mf_s_819428437_8wycpofo_.bkp';
Starting restore at 03-JUL-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=321 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output filename=/home/oracle/orabase/oradata/ORACLE/control01.ctl
output filename=/home/oracle/orabase/oradata/ORACLE/control02.ctl
output filename=/home/oracle/orabase/oradata/ORACLE/control03.ctl
Finished restore at 03-JUL-13
RMAN>
SQL> conn /as sysdba
Connected.
SQL> alter database mount;
Database altered.
SQL> alter database backup controlfile to trace as '/home/oracle/controlfile.txt';
Database altered.
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1207959552 bytes
Fixed Size                  2095864 bytes
Variable Size             369100040 bytes
Database Buffers          822083584 bytes
Redo Buffers               14680064 bytes
SQL> @/home/oracle/control.sql;
Control file created.
SQL> alter database open;
Database altered.
SQL>

   打开数据库不到2分钟数据库自动关闭,查看警告日志信息发现如下报错信息:

ORA-00600: internal error code, arguments: [4194], [5], [4], [], [], [], [], []

ORA-600 [4194]错误的官方解释是:"Undo Record Number Mismatch While Adding Undo Record",当数据库通过REDO恢复来增加UNDO记录时,发现UNDO记录的号码不匹配,也就是出现了不一致。利用将回滚表空间设置改为manual,设置隐含参数_corrupted_rollback_segments尝试打开数据库。

通过语句创建pfile文件

SQL> conn /as sysdba
Connected to an idle instance.
SQL> create pfile from spfile;    
File created.
SQL>


重命名spfile文件名,修改pfile文件加入

*._corrupted_rollback_segments= _SYSSMU1$, _SYSSMU2$, _SYSSMU3$, _SYSSMU4$, _SYSSMU5$, _SYSSMU6$, _SYSSMU7$, _SYSSMU8$, _SYSSMU9$, _SYSSMU10$
*.undo_management=MANUAL

使用initORACLE.ora启动数据库。数据库暂时可以打开,尽快导出业务数据重建数据库导入业务数据。

SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1207959552 bytes
Fixed Size                  2095864 bytes
Variable Size             369100040 bytes
Database Buffers          822083584 bytes
Redo Buffers               14680064 bytes
Database mounted.
Database opened.
SQL>


参考地址:http://yangtingkun.itpub.net/post/468/497211