Oracle断电恢复ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [44437], [17323], [18486], [

前端之家收集整理的这篇文章主要介绍了Oracle断电恢复ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [44437], [17323], [18486], [前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

断电后Oracle数据库就open不了,报了:

ORA-00600: 内部错误代码,参数: [kcratr_nab_less_than_odr],[1],[44437],[17323],[18486],[

内部错误,然后执行以下操作:

recover database using backup controlfile until cancel;

ORA-00448: normal completion of background process
Slave exiting with ORA-283 exception

实例起不来,只能强制的将数据库启动,设置隐藏参数

在mounted下执行:alter system set "_allow_resetlogs_corruption"=true scope=spfile;

设置好后,alter database open;时,又报了以下错误


ORA-00600: internal error code,arguments: [2662],[3600],[2803761690],
[3600],[2803771391],[12583040],[],[]

结合以前处理过的600错误的经验,这个2662是scn不一致导致的错误,此时只能跳跃的人为干预将scn提高到一个值,其实

也只能是提高,应该没办法降低,在没有备份的情况下。

以为我数据库实例崩溃了,不能打开数据库,只能到mounted状态下,所以只能按照以下方式来提升SCN:

通过10015事件,在mount状态下

alter session set events '10015 trace name adjust_scn level 1';

其中的1是增加1亿,没记错的话,当然这个不是非常重要。

如果数据库可能打开的话,那么按照以下处理:

alter session set events 'IMMEDIATE trace name adjustT_scn level 1';

我记得有一次采用这个方式,提高的scn值很有限,因为一个是SCN相差非常大,第二是因为11g时默认不让你快速提高scn值得,

此时只能:

设置隐含参数_minimum_giga_scn 快速递增CURRENT SCN。

注:2012年1月后的PSU中包含隐含参数_external_scnrejection_threshold_hours,此时隐含参数和10015事件会失效。

调整好后执行 alter database open resetlogs;

conn ti/ti

ERROR:
ORA-00600: internal error code,arguments: [4193],
[],[]

这个是因为undo表空间坏掉了,处理方式:

alter system set undo_management = manual scope=spfile;
sql> alter system set undo_tablespace='' scope=spfile;
sql>shutdown immediate
sql>startup
sql>create undo tablespace undotbs2 datafile 'E:\orcl_data\orcl\undotbs2.dbf' size 100M;
----设置undo管理方式为 ’自动
sql> alter system set undo_management =auto scope=spfile;
----设置undotbs 为新建的undotbs2
sql> alter system set undo_tablespace = undotbs2 scope=spfile;
----删除原来损坏的undo表空间
sql> drop tablespace UNDOTBS1 including contents and datafiles;
sql>shutdown immediate
sql>startup

此时数据库能打开,就正常了。

此后最好将数据库备份下,有些坏了的表最好重新做一下,肯定会有并发比较高的表不一致的。

猜你在找的Oracle相关文章