RE: check for (empty?) blocks which leads to ORA-8103 in a datafile?

  • From: "Mark W. Farnham" <mwf@xxxxxxxx>
  • To: <martin.a.berger@xxxxxxxxx>, "'tim'" <tim@xxxxxxxxx>
  • Date: Wed, 9 Sep 2009 17:37:52 -0400

If I understand you correctly, you've got a datafile that has some zeros
smeared on it.

Now if your indexes happen to be in a different tablespace or by luck in a
different datafile in the same tablespace, you *should* be able to get back
the colummn values from those indexes by querying the column set from each
index. Since the rowid also appears in the index, you should be able to get
all the rowids back as well. So if you stuff those rowids into a table and
allow the event to ignore table read errors (sorry, not in my head at this
time and I'm not looking it up), then after you build the table of row ids
you should be able look for them.

Or I suppose if you load up the rowids formatted by file and block (perhaps
even using a group by to get it smaller if you're not trying to actually
retrieve the data, then it would be pretty routine to examine the list of
files and blocks that make up your table, except perhaps for migrated rows.

If I recall correctly the indexes keep the original rowid for migrated rows
and the only place the relocated rowid exists is the original block. I could
be wrong about this, I know I suggested they let dbserver idle time be used
for cleaning indexes as time allowed and eliminating the original rowid and
relocation pointer in, er, 1991, but as far as I know that never got to the
top of the heap. (Pun intended.)

Okay, I just typed that off the top of my head. In summary, querying any
fully surviving index for just its columns and the rowid pieces should work.

mwf

-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx]
On Behalf Of Martin Berger
Sent: Wednesday, September 09, 2009 4:15 AM
To: tim
Cc: niall.litchfield; ORACLE-L
Subject: Re: check for (empty?) blocks which leads to ORA-8103 in a
datafile?

Tim,

a really good idea!

On Tue, Sep 8, 2009 at 22:45, Tim Gorman<tim@xxxxxxxxx> wrote:
> DBMS_REPAIR.CHECK_OBJECT?

unfortunately, it throwed me
ORA-00600: internal error code, arguments: [4555], [0], [], [], [], [], [],
[]
ORA-06512: at "SYS.DBMS_REPAIR", line 284
ORA-06512: at line 4

this will lead me to another SR ;-)

thanks for the suggestion!
 Martin
--
//www.freelists.org/webpage/oracle-l




--
//www.freelists.org/webpage/oracle-l


Other related posts: