Question: I do not see any errors being
encountered, and when I restart the application, it works for a
while and then starts reporting "ORA-01578 ORACLE data block
corrupted. How can I detect Oracle corruption?
Answer: Oracle corruption is quite rare,
and when corruption occurs, it is usually due to bad
hardware (disks). Nonetheless, Oracle provides several
tools to find Oracle corruption:
-
Data Recovery Advisor:
You can use the
Oracle 11g Data Recovery advisor.
-
dbverify: You can run
dbverify to identify the exact SYSAUX blocks
with are corrupt. Once you do this and see which index
resides in those blocks, you can simply rebuild the
index to repair the corruption.
-
dbms_repair: The
Oracle dbms_repair utility will find the exact block
that has corruption.
-
RMAN: In RMAN you can issue the
blockrecover command at the RMAN prompt,
specifying the file and block numbers for the corrupted
blocks.
-
dbms_repair: One other option in
dbms_repair.htm is to try
dbms_repair.fix_corrupt_blocks.
-
BBED: as a last resort you can
work with Oracle technical support to use
BBED
to repair the corruption.
After you find the Oracle corruption, you can use the
BBED utility to edit the corrupt
data block (with the aid of Oracle technical support).
Also see my notes on the
ORA-01578 data block corrupted.