作者:dbtan |【转载时请以超链接形式标明文章出处作者信息】


特殊情况的恢复:

在很多情况下,特别是在使用隐含参数强制打开数据库之后,可能会在警报日志中出现ORA-00600 4194错误。

4194错误通常说明UNDO段出现问题,最好的办法是通过备份进行恢复,如果没有备份,那么可以通过特殊的初始化参数进行强制启动,本文就Oracle的隐含参数进行恢复说明(由于实际情况可能各不相同,进行测试前请先备份),仅供参考。

修改init<sid>.ora参数文件,使用Oracle隐含参数_corrupted_rollback_segments将回滚段标记为损坏,此时启动数据库,Oracle会跳过对于这些回滚段的相关操作,强制启动数据库。

._corrupted_rollback_segments='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$'

1. 使用init<sid>.ora参数文件启动数据库:

SQL> startup pfile=init<sid>.ora
此时数据库正常OPEN。

2. 此时可以重新创建新的UNDO表空间,删除出现问题的表空间,修改参数文件,由参数文件生成新的SPFILE,重新启动数据库:

SQL> create undo tablespace undotbs1 datafile '/oracle/oradata/tqgzs11g/undotbs1.dbf' size 100M;
SQL> alter system set undo_tablespace=undotbs1;
修改参数文件,变更UNDO表空间,并取消_corrupted_rollback_segments设置:
*.undo_tablespace='UNDOTBS1'
由参数文件创建SPFILE文件:
SQL> create spfile from pfile;

3. 重启数据库,观察alert文件:
此时数据库可以正常启动,通过以上方法恢复数据库,通常会导致数据库内部存在不一致的状况,通常建议立即进行全库exp,然后重新建库,再通过imp恢复数据库。

- The End -