Re: Identifying the content of a corrupted block in system tablespace

  • From: Jeremiah Wilton <jeremiah@xxxxxxxxxxx>
  • To: Vlado Barun <vlado@xxxxxxxxxx>
  • Date: Thu, 6 Jan 2005 19:53:07 -0800 (PST)

On Thu, 6 Jan 2005, Vlado Barun wrote:

> I have a corrupted block in the system tablespace.
> I used the standard query to identify the object that the block but it
> failed:

A couple things off the top of my head:

There is probably more than one row in the corrupted block, since most
blocks have a few rows and OBJ$ is not that wide.

The SYS.I_OBJ2 index has object names in it.  It is possible that you
could compose a select statement that would read only from the index
without accessing the table.  You could exclude all rows that don't
appear in valid blocks in OBJ$.  You would be left with the columns in
SYS.I_OBJ2 that are in the corrupted block of OBJ$.  You might have to
fiddle with the query to get the optimizer to do exactly what you
want.

You could also dump the contents of the corrupted block and see if you
could make heads or tails of it.  Unfortunately unless you're very
good at data storage internals you can't be sure if you are looking at
deleted or pre-updated data, but OBJ$ doesn't get that much of that in
most systems.

So don't head up any rivers in Georgia backcountry yet.  There may be
hope.  Let me know if you can't figure out how to do any of this.

--
Jeremiah Wilton
ORA-600 Consulting
Emergencies - Seminars - Hiring
http://www.ora-600.net
--
//www.freelists.org/webpage/oracle-l

Other related posts: