Wednesday, July 1, 2009

Oracle Data Block corruption ORA-01578

Oracle Data Block corruption ORA-01578
----------------------------------------

ORA-01578 Oracle data Block corrupted ( File# num and Block# num)

To determine where the corruption is:

select * from sys.dba_extents
where file_id=filenum and
blocknum between block_id and (block_id+blocks-1);

The filenum and blocknum are the numbers in 01578 error.
This query should give the segment_name and segment_type
(ie the table and its name)

In order to salvage the uncorrupted part of the table you can
add an entry to init.ora.
event="10231 trace name context forever"
This will skip the corrupted block on a table scan.
Export the table,drop and recreate it from Import !!!

No comments: