【ORA-600】[kcratr_nab_less_than_odr] 异常宕机后的实例恢复during Instance Recovery after Database Crash

由于操作系统异常变为只读操作系统,不能写数据文件,导致实例异常终止。从而导致实例重启时,在open阶段,报ORA-600 [kcratr_nab_less_than_odr]错误。


ORA-600 [kcratr_nab_less_than_odr] during Instance Recovery after Database Crash (文档 ID 1299564.1)

APPLIES TO:

Oracle Database - Enterprise Edition - Version 11.2.0.1 to 11.2.0.3 [Release 11.2]
Information in this document applies to any platform.
***Checked for relevance on 21-Sep-2012***

我的数据库是11.2.0.4,也同样有此问题。


SYMPTOMS

Trying to open a Database after a Crash caused by Storage Problems the Instance Recovery fails with :

ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [219], [25020], [25021], []

 

The Database can't open at this Point. In the corresponding Tracefile we can find this Error Callstack:

dbkedDefDump(): Starting incident default dumps (flags=0x2, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=1h50ks4ncswfn) -----
ALTER DATABASE OPEN

----- Call Stack Trace -----
ksedst1 <- ksedst <- dbkedDefDump <- ksedmp <- dbgexPhaseII <- dbgexProcessError <- dbgePostErrorKGE  <- kgeasnmierr <- kcratr_odr_check  <- kcratr <- kctrec <- kcvcrv <- kcfopd <- adbdrv <- opiexe <- opiosq0 <- kpoal8 <- opiodr <- ttcpip <- opitsk <- opiino <- opiodr <- opidrv <- sou2o <- opimai_real <- ssthrdmain <- main <- start

CAUSE

This Problem is caused by Storage Problem of the Database Files. The Subsystem (eg. SAN) crashed while the Database was open. The Database then crashed since the Database Files were not accessible anymore. This caused a lost Write into the Online RedoLogs and so Instance Recovery is not possible and raising the ORA-600.

这个问题是由于数据库文件的存储问题导致的。当数据库在open状态的时候子系统(如SAN)宕掉了。由于数据文件不能访问,因此数据库会紧接着宕掉。由于不能写联机重做日志,因此在重启数据库实例的时候不能进行实例恢复,从而报ORA-600的错误。


SOLUTION

There are two possible Solutions两个解决方法:

1. If you could restore your Storage Environment and the Online RedoLogs from the Time of the crash you can try a manual Recovery followed by a RESETLOGS:

如果可以恢复存储环境,并且将联机重做日志恢复到实例宕掉的那一时间点,那么可以通过RESETLOGS执行手工恢复。

SQL> startup mount;

SQL> recover database until cancel using backup controlfile;


-> manually provide Online RedoLog containing the last (current) Sequence when asked, eg.

ORA-00279: change 100000 generated at xx/xx/xxxx xx:xx:xx needed for thread 1
ORA-00289: suggestion :
/flash_recovery/archivelog/xxxx_xx_xx/o1_mf_1_100_%u_.arc
ORA-00280: change 100000 for thread 1 is in sequence #100

Specify log: {=suggested | filename | AUTO | CANCEL}
/ora/oradata/dbtest/redo04_1.rdo  --数据库宕掉时所应用的联机在线日志
Log applied.
Media recovery complete.

SQL> alter database open resetlogs;


2. If  step1. fails or you don't have the full Set of Files you have to restore and recover the Database from a recent Backup.

    如果第一个方法不成功或者有文件丢失的话,那么你就只能从最近的备份中恢复数据库了。

      

Sharon
2014.07.16


 
  
 
  

----------------------------------------------------------------------------------------------

转载须注明出处!

http://blog.csdn.net/sharqueen_wu/article/details/37876369

 
  

转载须注明出处!

http://blog.csdn.net/sharqueen_wu/article/details/37876369

 
  

转载须注明出处!

http://blog.csdn.net/sharqueen_wu/article/details/37876369





你可能感兴趣的:(oracle,troubleshooting,oracle错误,ORA-600,只读操作系统)