Logical block corruption in an unused block which is a part of index
Hi All,
During RMAN backup level 0 I am getting a corrupted block my DB:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on t20 channel at 07/22/2009 21:30:49
ORA-19566: exceeded limit of 0 corrupt blocks for file /oracle/oradata/DB2/plind05_02.dbf
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
2950 1879477 1 1.0124E+13 LOGICAL
SQL> SELECT tablespace_name, partition_name,segment_type, owner, segment_name FROM dba_extents WHERE file_id = 2950 and 1879477 between block_id AND block_id + blocks - 1;
no rows selected
So this block does not belong to any object.
SQL > select * from dba_free_space where file_id= 2950 and 1879477 between block_id and block_id blocks -1;+
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
USAGIDX_200907 2950 1879433 1048576 128 909
But it exists in dba_free_space so it belongs to file space usage bitmap.
DB Verify shows:
myserver:/oracle/rman/DB2:DBINST1> dbv file=/oracle/oradata/DB2/plind05_02.dbf BLOCKSIZE=8192
DBVERIFY: Release 10.2.0.4.0 - Production on Wed Jul 29 13:47:38 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /oracle/oradata/DB2/plind05_02.dbf
Block Checking: DBA = -480465494, Block Type = KTB-managed data block
**** row 2: key out of order
---- end index block validation
Page 1879477 failed with check code 6401
DBVERIFY - Verification complete
Total Pages Examined : 4194176
Total Pages Processed (Data) : 0
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 3404935
Total Pages Failing (Index): 1
Total Pages Processed (Other): 569
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 788672
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 1795222745 (2360.1795222745)
Now, I have identified that this block belongs to an index subpartition so I have rebuild it with alter index ... rebuild subpartition... However, the RMAN backup still fails and DBV still reports an error.
I know that we could simply recreate the index but the problem is that its quite big (>6GB and table is >7TB).
My strong feeling is that the cause of this is that corrupted blocks will still be reported by RMAN and DBV until they are reused and reformatted.
My question is:
How can I reuse or reformat a block which does not belong to any object?