Email: service@parnassusdata.com 7 x 24 online support!
Oracle Logical Block Corruption
This is when the block contains a valid checksum and the structure below the block header is corrupt (Block content is corrupt). It may cause different ORA-600 errors.
Row overwritten. Invalid row with invalid length.
Space management structures inside the block are invalid.
Physical and Logical Block Corruptions. All you wanted to know about it. (Doc ID 840978.1).
An internal error is registered in the alert log. Description details for Logical Corruptions are not normally printed in the alert.log (what is wrong inside the block). DBVerify will report what is logically corrupted in the block. Corruption Examples are:
row locked by non-existent transaction - ORA-600 [4512],etc
the amount of space used is not equal to block size
avsp bad (Incorrect value for Available Space) etc.
When db_block_checking is enabled, it may produce the internal error s ORA-600 [kddummy_blkchk], ORA-600 [kdBlkCheckError]
Corruption can be introduced during database recovery as inconsistency may be present in the redo stream. It is difficult to know if inconsistency exists in the redo stream if db_block_checking is not enabled, as inconsistency could have been introduced earlier than when the error is triggered.
Example from JPMC outage:
Bug 10113224 Index coalesce may generate invalid redo if blocks in the buffer cache are invalid/corrupted
Index coalesce may generate invalid redo if blocks in the buffer cache are invalid/corrupted because db_block_checking is not enabled and a stray memory write into buffer cache corrupts the blocks being accessed by the index coalesce.
Oracle defect. Most of the known issues are documented in:
ORA-600 [kddummy_blkchk] (Doc ID 300581.1)
Logical Corruption can also be introduced by a stray write in memory (in the buffer cache) by another process or hardware (Memory problems).