Sunday, May 4, 2008

ORA-19566: exceeded limit of 0 corrupt blocks for file

Error Description:
---------------------

While I am taking a database backup it halt with returning an error,

RMAN-03009: failure of backup command on ORA_DISK_1 channel at 05/04/2008 14:21:41
ORA-19566: exceeded limit of 0 corrupt blocks for file /oradata2/data1/dbase1/system01.dbf

Error Explanation:
---------------------------

Whenever DB_BLOCK_CHECKSUM parameter is set to TYPICAL or FULL (by default it is TYPICAL) then DBWn process and the direct loader will calculate a checksum and store it in the cache header of every data block when writing it to disk. However DBWn always calculates checksums for the SYSTEM tablespace regardless on the settings on DB_BLOCK_CHECKSUM parameter. Now while reading the contents of the block the checksum is verified if the block already contains a checksum. If the validation fails, then the block is marked corrupt in the backup. During RMAN backup the block verification fail and the error returns.

Solution:
-------------

1)Run DBVerify utility. Have a look at Verify Physical Data Structure

For example, $ dbv file=/oradata2/data1/dbase1/system01.dbf
Also run this operation for against the all datafiles you suspect which has corrupt block.

2)While taking backup within RUN block specify SET MAXCORRUPT in order to say how many corruption it can handle. I ran dbverify utility and I saw 1 block corrupt each in SYSTEM(1) and SYSAUX(3) datafile.

3)Now backup database with SET MAXCORRUPT option.

RMAN> RUN{
2> SET MAXCORRUPT FOR DATAFILE 1,3 to 1;
3> BACKUP DATABASE;
4> }


For datafile 1 and 3 maximum 1 block corruption can be tolerated.

No comments:

Post a Comment