Email: service@parnassusdata.com 7 x 24 online support!

Oracle Redo Log Corruption

Oracle Redo Log Corruption

  • Block corruption in redo log file blocks.  Can be a logical or a physical corruption
  • Invalid block in redo log 
  • ORA-353 log corruption near block %s change %s time %s
  • ORA-368 checksum error in redo log block
  • ORA-355 change numbers out of order
 
DIAGNOSTIC ANALYSIS:
--------------------
Alert log hits the error:
 
ORA-00353: log corruption near block 6071112 change 65773130219520 time
 
08/22/2012 12:59:45
 
ORA-00312: online log 7 thread 1: '/oradata5/mefdbprd/redo07b.log'
ORA-00312: online log 7 thread 1: '/oradata5/mefdbprd/redo07.log'
 
Incident trace file does not dump the bad redo
Customer's redo validate does not throw any error
Customer can stop and restart the capture
which means it is not a ondisk corruption
It looks like the corruption is still in cache
 
WORKAROUND:
-----------
Maybe same as original bug# 13840711
which is _redo_read_from_memory = FALSE
 
When this bug is encountered during media recovery (or by dumping the corrupt
archived log), errors similar to the following will be reported:
ORA-00354: corrupt redo log block header
ORA-00353: log corruption near block 257 change 6895 time 01/14/98 14:09:17
ORA-00334: archived log: '/users1/oracle73/arch/arc90.arc'
Because the bug causes chunks of blocks to be written to the wrong location,
the logical block number (recorded in each redo block header) will be out
of sequence. In a healthy archived log, the logical block numbers matches
the relative block location in the file.
So, the steps required to determine whether bug 554516 is the cause of the
corruption are:
1. Ask the customer to hex dump the offending redo block, and a few blocks
either side of it. Then email the trace file to Support. In the above
example:
% dd if=/users1/oracle73/arch/arc90.arc bs=512 skip=255 count=6 | od -x >
\
archlog.hex
The above command will dump block number 257 (reported in the ORA-353) and
a few blocks either side.
2. In a redo log, the first ub4 field is the log sequence number. The second
ub4 is the logical block number. 
Note:
Redo logs are written in O/S size blocks. Verify the size of the redo log
block before issuing the dd comma