Soft Corrupt Blocks - Definition and information (Doc ID 1496934.1)
In this Document
Purpose
Scope
Details
What is a Soft Corrupt Block?
When a block is marked as Soft Corrupt?
Why is a block marked as Soft Corrupt?
What is the Oracle behavior for a Soft Corrupt Block?
APPLIES TO:Oracle Database - Enterprise Edition - Version 9.2.0.1 and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Information in this document applies to any platform.
PURPOSEOracle may mark a block as Soft Corrupt. This document explains the definition of Soft Corrupt Block and the situations and behaviour when a block is marked as Soft Corrupt.
DETAILSWhat is a Soft Corrupt Block?A Software Corrupt Block is:
1) Former LOGICAL corrupt block marked as formally corrupt or 2) A block that was attempted to be recovered in the buffer cache and could not be recovered. The next message is indication of marking a block as soft corrupt in memory because the automatic block recover could not recover the block: "Block recovery logically corrupted file .. block ..."
A block that is PHYSICAL corrupt is also called Media Corrupt Block. A Media Corrupt block is not a Soft Corrupt block.
When a block is marked as Soft Corrupt?- When db_block_checking is enabled, Oracle soft corrupts an already corrupt block when modifying it (the block before image is already corrupt meaning that the block may be already corrupt on DISK). This only applies for LOGICAL corruptions as with PHYSICAL corruptions the block is detected as corrupt during read and does not arrive to the checking code where a modification takes place.
- When automatic block recover could not recover the block after a process failed during block modification. "Block recovery logically corrupted file .. block .." message appears in the alert.log
- dbms_repair.FIX_CORRUPT_BLOCKS can also be used to mark a LOGICAL corrupt block as Soft Corrupt.
- Media recovery can also soft corrupt a block if the block is already PHYSICAL corrupt
Subsequent block reads then produce ORA-1578 instead of internal errors.
Why is a block marked as Soft Corrupt?- A block is marked as soft corrupt to prevent other internal errors and to prevent further corruptions in the database. When a block is logically corrupt it may cause ORA-600 / ORA-7445 errors and may produce further corruptions for other blocks in the Oracle buffer cache memory when the corrupt block is modified. Marking the block as soft corrupt prevents DML SQL statements to modify the block. When a block is marked as soft corrupt, SQL statements fail with error ORA-1578 when the block is read.
- A block is also marked as Soft Corrupt so it can be skipped when using event 10231 or when using procedure dbms_repair.SKIP_CORRUPT_BLOCKS.
- When using TDE (Transparent Data Encryption - Tablespace encryption), a block can be marked as soft corrupt if an incorrect or invalid wallet is used. Note that for this case the block is only soft corrupt in Memory as long as the invalid wallet is used (dbverify does not produce an error as the block is not soft corrupt on disk).
What is the Oracle behavior for a Soft Corrupt Block?- When a block is marked as soft corrupt, SQL statements fail with error ORA-1578 when reading the block unless dbms_repair.SKIP_CORRUPT_BLOCKS or event 10231/10233 are used.
- RMAN backups do not fail with Soft Corrupt blocks. RMAN ignores 'soft corrupt' blocks during backup without setting the MAXCORRUPT clause. Soft Corrupt blocks do not count in the MAXCORRUPT clause.
- Media Recovery (rollforward) ignores Soft Corrupt blocks. In general media RECOVERY ignores Physical corrupt blocks and Soft Corrupt corrupt blocks. When the block is logically corrupt Media RECOVERY may fail with unexpected errors. When the block is PHYSICAL corrupt, media recovery marks the block as soft corrupt and recovery continues with no errors (Corrupt block is skipped).
- RMAN validate does not report a soft corrupt block in the trace file but in v$database_block_corruption. Example:
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
1 59744 1 0 CORRUPT
- DBVerify reports the soft corrupt block with DBV-200 error:
DBV-00200: Block, dba <rdba>, already marked corrupted
NOTE:840978.1 - Physical and Logical Block Corruptions. All you wanted to know about it.
|