ORA-00600[3020]也被称为STUCK RECOVERY, 一般的原因是当一个数据块在被recovery恢复过程中,发现要APPLY到该块上的redo重做日志验证这个块的内容时,与ORACLE的算法不匹配,即认证redo与data block之间不一致,此时就需要报错,否则ORACLE不能在糊涂账上继续写糊涂账。






服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com


Arg [a] Block DBA
Arg [b] Redo Thread
Arg [c] Redo RBA Seq
Arg [d] Redo RBA Block No
Arg [e] Redo RBA Offset.


在ORACLE 10.1中的含义是:

Arg [a] Absolute file number of the datafile.
Arg [b] Block number
Arg [c] Block DBA


这个报错的模块属于内核并行内存恢复, 其具体影响是可能导致 实例在前滚时报错从而导致打开数据库OPEN Database失败。


解决方案: 使用recover命令时多个可能都会导致该错误,最常见的可能是数据文件没有被正常restore 到磁盘,或者restore是不完全的。 因此,首先保证整个备份被有效restore出来了,这个restore 一定要在recover database之前完成。


如果确认restore是完整的,但是问题仍存在,则考虑再次从backup restore然后做一个基于时间点POINT-IN-TIME的恢复,这个时间点应当早于ORA-600[3020]错误所指向的时间点。


SQL> recover database until time ‘YYYY-MON-DD:HH:MI:SS’;

当然这个错误也可能由于丢失更新lost update而造成。

在常规操作过程中, 块的更新和写是在包括一系列的数据文件、重做日志文件和归档日志文件中的。这些文件中任意一个的 丢失写都可能是ORA-00600[3020]的原因。因此也建议全面检查发生问题的操作系统和磁盘硬件。






ORA-600 [3020]相关的一些bug列表:


NB Bug Fixed Description
9847338 Session hang after applying the patch for Bug 9587912 which causes ORA-600 [3020]
+ 13467683,,, Join of temp and permanent tables in RAC might cause corruption of permanent table. Regression by bug 10352368
12831782,, ORA-600 [3020] / ORA-333 Recovery of datafile or async transport do not read mirror if there is a stale block
12582839, ORA-8103/ORA-600 [3020] on RMAN recovered locally managed tablespace
11689702,,,, ORA-600 [3020] during recovery after datafile RESIZE (to smaller size)
10329146,,,,,, Lost write in ASM with multiple DBWs and a disk is offlined and then onlined
10218814,,, ORA-600 [3020] during recovery / on standby
+ 10209232,,,,,, ORA-1578 / ORA-600 [3020] Corruption. Misplaced Blocks and Lost Write in ASM
* 10205230,,,,, ORA-600 / corruption possible during shutdown in RAC
10094823,,, Block change tracking on physical standby can cause data loss
10071193,, Lost write / ORA-600 [kclchkblk_3] / ORA-600 [3020] in RAC – superceded
9587912, ORA-600 [3020] in datafile that went offline/online in a RAC instance
8774868,,, OERI[3020] reinstating primary
+ 8769473, ORA-600 [kcbzib_5] on multi block read in RAC. Invalid lock in RAC. ORA-600 [3020] in Recovery
P 8635179,, Solaris: directio may be disabled for RAC file access. Corruption / Lost Write
+ 8597106,, Lost Write in ASM when normal redundancy is used
P 12330911 12.1 EXADATA LSI firmware for lost writes
+ 10425010, 12.1 Stale data blocks may be returned by Exadata FlashCache
8826708, ORA-600 [3020] for block type 0x3a (58) during recovery for block restored by RMAN backup
11684626 ORA-600 [3020] on standby involving “BRR” redo when db_lost_write_protect is enabled
8230457,,, Physical standby media recovery gets OERI[krr_media_12]
+ 7680907,, ORA-600 [kclexpandlock_2] in LMS / instance crash. Incorrect locks in RAC. ORA-600 [3020] in recovery
4637668, IMU transactions can produce out-of-order redo (OERI [3020] on recovery)
4594917,, Write IO error can cause incorrect file header checkpoint information
4453449, OERI:3020 / corruption errors from multiple FLASHBACK DATABASE
7197445, Standby Recovery session cancelled due to ORA-600 [3020] “CHANGE IN FUTURE OF BLOCK”
5610267 MRP terminated by ORA-600[krr_media_12] / OERI:3020 after flashback
3560209 OERI[3020] stuck recovery under RAC
3397181,, ALTER SYSTEM KILL SESSION of recovery slave causes stuck recovery
* 3381950 Backups from RAC DB before Data Guard Failover cannot be used
3535712, OERI[3020] / ORA-10567 from RAC with standby in max performance mode
4594912, Incorrect checkpoint possible in datafile headers
3635331, Stuck recovery (OERI:3020) / ORA-1172 on startup after a crash
2322620 OERI:3020 possible on recovery of LOB DATA
P+ 656370,, AlphaNT only: Corrupt Redo (zeroed byte) OERI:3020






  1. Bug 10209232 ORA-1578 / ORA-600 [3020] Corruption. Misplaced Blocks and Lost Write inASMDescriptionBlocks can be misplaced in ASM after using a wrong extent map to write blocksduring rebalance. The Blocks intended to write may not be written.Those blocks become stale blocks (Lost Write).Misplaced Blocks================The blocks are written to wrong locations and those blocks become misplacedwith wrong rdba producing ORA-1578 and dbverify may report the misplacedblocks as follow:DBVERIFY – Verification starting : FILE = +GROUP1/data_1.269.586785881Page 8195 is marked corruptCorrupt block relative dba: 0x06c02003 (file 27, block 8195)Bad header found during dbv:Data in bad block:type: 6 format: 2 rdba: 0x06c01a03 <– Content is for a different blocklast change scn: 0x08e4.371d0fa4 seq: 0x2 flg: 0x04spare1: 0x0 spare2: 0x0 spare3: 0x0consistency value in tail: 0x0fa40602check value in block header: 0x7965computed block checksum: 0x0 <— Checksum is okLOST WRITE / LOST IO====================Blocks intended to write may not be written. Those blocks become stale blocks.A media recovery of these blocks may produce ORA-600 [3020].As there is lost IO this may also produce several inconsistencies with errors:ORA-8103, ORA-1410ORA-600 [kdsgrp1], ORA-1499 by Analyze validate structure cascadeORA-600 [25027]ORA-600 [4553]Run dbms_diskgroup.checkfile to identify mirror discrepancies when ASMdisk group normal redundancy is used.If there is a Standby database and if 11g parameter DB_LOST_WRITE_PROTECT is setin the PRIMARY database, a recovery in the Standby may fail with messages:STANDBY REDO APPLICATION HAS DETECTED THAT THE PRIMARY DATABASELOST A DISK WRITE OF BLOCK , FILE

Speak Your Mind

沪公网安备 31010802001379号

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569