ORA-00600: internal error code, v arguments: [3020], [128], [1893626], [538764538], [], [], [], []
ORA-00600: internal error code, arguments : [2662], [37], [337162776], [37], [338630729], [8388617], [], []
_allow_error_simulation=TRUE(10g及其以上版本需要)
2、启动数据库到mount状态:
SQL> startup mount pfile=/oracle/init0819.ora;
3、调整SCN:
SQL> alter session set events '10015 trace name adjust_scn level 149';
4、恢复数据库:
SQL> recover database using backup controlfile until cancel;
执行恢复后敲cancel
5、强制打开数据库:
SQL> alter database open resetlogs;
步骤3:如果此时遇到ORA-600 [4193]
数据库成功打开,但随即又宕掉,alert日志中出现很多如下报错:
ORA-00600: internal error code, arguments: [4193],
这是由于undo记录和redo中的记录不匹配导致
6、继续在init0819.ora中设置如下参数:
undo_management=manual
event='10513 trace name context forever, level 2'
event='10512 trace name context forever, level 1'
event='10511 trace name context forever, level 2'
event='10510 trace name context forever, level 1'
随后正常打开数据库,打开成功
步骤4:如果此时遇到ORA-600 [4194]等情况
ORA-600 [4XXX]一般都是和UNDO有关,4194错误等情况也是因为回滚段损坏导致,不过处理方法和[4193]有所不同,一般来说,需要通过trace文件,找到出现故障的RBS段,然后使用_offline_rollback_segments或者_corrupt_rollback_segments参数把这些回滚段放进去。这两个参数的含义是前者仅仅是把设置的回滚段暂时离线,以后如果有可能还可以再ONLINE,而后者直接把这些回滚段设置未故障的,经过处理后,这些回滚段无法再次离线。不过我们在遇到类似的问题的时候,一般来说都是回滚段无法恢复了,使用哪个参数的关系并不很大。
设置了这个参数后,可以再尝试阿凯数据库。一般情况下数据库可以正常打开。不过打开后数据库有可能再次当掉,这个情况和步骤3中的6号步骤情况类似,如果遇到就采用6号步骤的参数,停止相关的回滚操作。
强制打开数据库是死马当做活马医的最后步骤,在生产环境中是不可逆的,因此在操作前要先做好备份。另外也要确定没有其他更好的恢复方法的时候再使用这个办法。另外就是严格按照步骤来,千万不要轻易从网上随便百度一些方法来做。