Formatting Corrupted Block Not Part of Any Segment
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:
1 2 3 4 5 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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:
1 2 3 4 5 6 7 8 9 | 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.
Related posts: