It’s been a while since my last post … but this issue I ran into last night is worth mentioning. Here’s what happened — one of my RMAN backups failed with:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup plus archivelog command at 05/05/2009 23:16:15
ORA-19566: exceeded limit of 0 corrupt blocks for file /u01/app/czgddata/a_txn_data02.dbf
The corrupt block was being reported as part of a segment — a table:
SQL> connect / as sysdba
Connected.
SQL>
SQL>
SQL> select owner, segment_name, segment_type
from dba_extents
where file_id = 401
and 257532 between block_id and block_id + blocks - 1;
2 3 4
OWNER
------------------------------
SEGMENT_NAME
--------------------------------------------------------------------------------
SEGMENT_TYPE
------------------
CZ
CZ_DEVL_PROJECTS
TABLE
But the data was still readable and I was able to move the table to “map the corrupt block” outside of the segment boundaries:
SQL> alter table CZ.CZ_DEVL_PROJECTS move;
Table altered.
SQL> select count(*) from CZ.CZ_DEVL_PROJECTS;
COUNT(*)
----------
312
Still, even after the move the block was still reported corrupt by the dbv and I had to deploy a procedure from the ML-Note: 336133.1. Which I fully documented in here –> How to Format Corrupted Block Not Part of Any Segment.
Vitaliy Mogilevskiy May 6, 2009
Posted In: Operations
Tags: corruption, ORA-19566, RMAN