Our third-party version control software uses an Oracle database as its
Documents are stored in a BLOB column in an Oracle table. It is NOT
stored "in_row" and logging is turned off (for performance reasons they
We recently encountered a bad block, and I have since determined there
are additional bad blocks, but it is just one block that is continually
giving us a problem.
When a user attempts to check an object into the repository, they often
get the error message:
E03020003: Database Error: [CAI/PT][ODBC Oracle 8
: ORACLE data block corrupted (file # 31, block
: data file 31: '/san1/oradata/PROD/harvestblob01.dbf'ORA-26040
: Data block was loaded using the NOLOGGING option
This tells me the block still has free space to insert new data; i.e.,
the block is on the free list.
Here is some information about the tablespace housing this lob segment
Can somebody tell me what I need to do to allow users to continue to
check items into this repository without receiving the error message and
with minimal data loss; i.e., limiting data loss to the content of
corrupted block# 123533. I think I can do this if I am able to
permanently get this block off the free list, but how can I do that?
I have contacted Oracle Support, but they have been of limited
assistance. They had me review metalink note 293515.1 "ORA-1578ORA-26040
in a LOB segment - Script to solve the errors". But this has
not helped our situation. The metalink note directs us to create a
table with a single column of type rowid. Then run an Oracle procedure
to populate this table with rowids for rows in the corrupted block.
After this we set concat to "#", then update the lob column to
"empty_blob". I did this and commited, but users receive the same error
Thanks for any and all suggestions.
Oracle Database Administrator
Information Technology Services
George Brown College
Phone: 416-415-5000 x4933