记一次无归档恢复ORA-00600: internal error code, arguments: [4194]

帮某客户恢复数据,只有数据文件与控制文件,归档已经全部删除,recover时报错,系统表空间数据文件system01.dbf 需要恢复,所以决定重建controlfile
CREATE CONTROLFILE REUSE DATABASE "JZH" RESETLOGS FORCE LOGGING ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 2
    MAXDATAFILES 2000
    MAXINSTANCES 8
    MAXLOGHISTORY 4844
LOGFILE
  GROUP 1 (
    '/xxxx/JZH/redo01a.log',
    '/xxxx/JZH/redo01b.log'
  ) SIZE 100M,
  GROUP 2 (
    '/xxxx/JZH/redo02a.log',
    '/xxxx/JZH/redo02b.log'
  ) SIZE 100M,
  GROUP 3 (
    '/xxxx/JZH/redo03a.log',
    '/xxxx/JZH/redo03b.log'
  ) SIZE 100M
.................................................
.................................................
.............................................略.
Control file created.

再以resetlogs方式打开数据库
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error

检查alert日志发现如下报错:
Opening with internal Resource Manager plan
Thu Aug 13 10:42:51 CST 2015
Errors in file /oracle/product/admin/JZH/udump/JZH_ora_26428.trc:
ORA-00600: internal error code, arguments: [4194], [69], [55], [], [], [], [], []
Doing block recovery for file 2 block 2266363
Resuming block recovery (PMON) for file 2 block 2266363
Block recovery from logseq 1, block 83 to scn 7291729705792
Thu Aug 13 10:42:54 CST 2015
Recovery of Online Redo Log: Thread 1 Group 1 Seq 1 Reading mem 0
  Mem# 0: /xxxx/JZH/redo01a.log
  Mem# 1: /xxxx/JZH/redo01b.log
ORA-00600 [4194]错误是由回滚段异常导致,所以决定利用隐含参数_corrupted_rollback_segments屏蔽_SYSSMU1$..._SYSSMU10$ 10个回滚段,保留system回滚段,并且将undo_management改为manual方式。

SQL> create pfile='/home/oracle/initjzh.ora' from spfile;
File created.
SQL> shu immedite
SP2-0717: illegal SHUTDOWN option
SQL> shu immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
Vi /home/oracle/initjzh.ora,添加如下内容:
undo_management='MANUAL'
_corrupted_rollback_segments='_SYSSMU1$','_SYSSMU2$','_SYSSMU3$','_SYSSMU4$','_SYSSMU5$','_SYSSMU6$','_SYSSMU7$','_SYSSMU8$','_SYSSMU9$','_SYSSMU10$'

打开数据库:
SQL> startup pfile=/home/oracle/initjzh.ora
ORACLE instance started.

Total System Global Area 4311744512 bytes
Fixed Size                  2101840 bytes
Variable Size            1191185840 bytes
Database Buffers         3103784960 bytes
Redo Buffers               14671872 bytes
Database mounted.
Database opened.
SQL> select name,open_mode from v$database;

NAME      OPEN_MODE
--------- ----------
jzh       READ WRITE

后续需要做如下工作:
1、
为临时表空间添加tempfile
SQL>alter temporary tablespace temp add tempfile ‘’;

2、
 创建新的undo tablespace
SQL>create undo tablespace undotbs2 datafile ‘’;

3、去掉_corrupted_rollback_segments隐含参数,将undo_management改为”auto”,将undo_tablespace改为undotbs2

4、创建spfile文件

5、exp/expdp导出数据库,重建数据库。

至此数据库恢复完成!






请使用浏览器的分享功能分享到微信等