Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: ORA-08103 : Object does not exist; but it is there

Re: ORA-08103 : Object does not exist; but it is there

From: Erwin Dondorp <erwindon_at_wxs.nl>
Date: Mon, 15 Nov 1999 07:58:24 +0100
Message-ID: <382FAF10.1A0DD744@wxs.nl>


A good trick to recover most of the data when 1 record or 1 block is damaged is:
- Use "SELECT ROWID FROM table"
  This will use the index to get all the rowids that exist in the table.   Put these in a file.
- Use "SELECT * FROM table WHERE ROWID = :1" to select all records one by one
  This will access the data through the index.   Some records will fail, these should be in the corrupted block.

- Use "TRUNCATE TABLE table" to empty the table
- Reinsert the found record.
- Start thinking whether the lost records were important or not...

Doing this in SQL*Plus might be very slow due to the repeated parsing of the statement.
A (type 4) Pro*C program will do the job nicely. I've done this more than once.

Erwin

SightBlinder wrote:
>
> Strangest thing, when trying to query this table, I recieve this
> error. When I look the table up in dba_objects and dba_tables, it is
> there and is valid. If you describe the object, its description is
> shown. It is not a nested or object table, just a simply table with
> one composite unique index. Can not run analyze table validate
> structure command, you recieve the 08103 error, I can not perform an
> export of the table, same error, When I run db_verify against the
> datafiles where the table resides, there are no errors shown on the
> datafiles.
> When I perform a select * from table, it will run up till the 159579
> row, then bombs with the 08103 error. If I run a select column1,
> column2 from table, where column 1 and 2 are the index columns, it
> will run and return 311396 rows, which is the total row count of the
> table.
> I understand the index data is returned from the index leaf blocks,
> but I don't understand what has happened to my table's data blocks. I
> can create another table using the create table as select * from table
> where rownum <159579; but I want to know what happened and what else I
> might could do to recover the entires tables data. I don't have an
> export of just the table and the database is nearly 300 GB, so I don't
> have the luxury of building another database from backups, then export
> the table from the backup.
> Anyone's help or ideas would be appreciated.
> ~Jim

--
Erwin Dondorp
<http://www.dondorp.com/> Received on Mon Nov 15 1999 - 00:58:24 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US