数据库UNDO损坏无法打开的处理方法

问题现象:
数据库意外断电后启动到OPEN状态时失败,警告日志报以下错误
ORA-00600: internal error code, arguments: [4194], [56], [4], [], [], [], [], []

问题分析:
对于这种断电意外重启DB的现象,如警告日志出现ORA600 【4194】提示,说明回滚表空间出错,处于不一致状态,如数据库处于非归档并且无备份状态,可用以下方面重建UNDO 表空间打开。

解决方案:
可以先使用手功管理的回滚表空间的方式将数据库打开
首先创建PFILE:

SQL> create pfile from spfile;
File created.

设置PFILE如下参数

undo_tablespace='SYSTEM'
undo_management='MANUAL'

并把UNDO自动管理屏蔽

#*.undo_management='AUTO'

创建回spfile

SQL> create spfile from pfile;
File created.

创建完成后启动数据库

SQL> startup 
ORACLE instance started.

DB打开后然后创建新的回滚表空间

SQL> create undo tablespace undotbs02 datafile '/oradata/test/undotbs02.dbf' size 5G;

Tablespace created.

删除原来的回滚表空间

SQL> drop tablespace undotbs1;
 
Tablespace dropped.

将回滚表空间设置为新创建的回滚表空间

SQL> alter system set undo_tablespace="undotbs02" scope=spfile;
 
System altered.

将回滚表空间管理方式设置为自动

SQL> alter system set undo_management=auto scope=spfile;
 
System altered.

最后重新启动数据库即可!