Summary
The RMAN database backup script ends with error:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ch02 channel at 10/08/2011 18:18:35
ORA-19566: exceeded limit of 0 corrupt blocks for file /oradb/NPDEV/oradata17/xnpx13.dbf
Recovery Manager complete.
logout
Script /oradb/NPDEV/orabin/netbackup/scripts/npdev_online.sh
You can check if there are corrupted blocks to the specific datafiles with the command:
SELECT * FROM dba_data_files
WHERE file_name LIKE '/oradb/NPDEV/oradata17/xnpx13.dbf';
after finding the file_id you can use RMAN to check for corruptions for the specific datafile
rman target / catalog rman/*****@rman
Recovery Manager: Release 9.2.0.8.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: NPDEV (DBID=4192835957)
connected to recovery catalog database
RMAN> RUN {
2> allocate channel ch01 TYPE 'SBT_TAPE';
3> send 'NB_ORA_CLIENT=clnode5';
4> BACKUP VALIDATE CHECK LOGICAL datafile 511;
5> }
allocated channel: ch01
channel ch01: sid=307 devtype=SBT_TAPE
channel ch01: Veritas NetBackup for Oracle - Release 6.5 (2010042404)
sent command to channel: ch01
Starting backup at 12-OCT-11
channel ch01: starting full datafile backupset
channel ch01: specifying datafile(s) in backupset
input datafile fno=00511 name=/oradb/NPDEV/oradata17/xnpx13.dbf
channel ch01: backup set complete, elapsed time: 00:16:36
Finished backup at 12-OCT-11
released channel: ch01
RMAN>
Check for corrupted blocks:
SQL> SELECT * FROM v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
511 1719526 1 0 FRACTURED
511 1719527 1 0 FRACTURED
But if you check for blocks 1719526, 1719527 you will notice that they
don't belong to any segment!
SELECT owner, segment_name, segment_type, partition_name,
511, 1719526 FROM dba_extents
WHERE file_id=511
AND 1719526 BETWEEN block_id AND block_id+blocks-1;
no rows selected
RMAN reads blocks on the disk level, so it is not aware if they belong to an object. Thus if an
object with corrupted blocks is dropped, those blocks remain
FRACTURED until reused by a new
object or allocated to an existing segment. At that time, Oracle will reformat the block (renew it)
and thus remove the fructure.
The possible solutions are:
1. Try to use the fractured blocks, for example with new extends. You can follow the Metalink Note
Rman Still Reports Blocks Corrupted After Corruption is Dropped [ID 437306.1]
2. Use the parameter
MAXCORRUPT at the RMAN backup script, for example
....
SET MAXCORRUPT FOR DATAFILE 511 to 3;
BACKUP DATABASE;
....