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: Block Corruptions

Re: Block Corruptions

From: Vitaliy Mogilevskiy <vit100gain_at_earthlink.net>
Date: Thu, 13 May 1999 18:31:22 -0700
Message-ID: <373B7CE9.94CEA61A@earthlink.net>


If corrupted object is a table then you can try this to identify which row is corrupted:

select * from TABLE
minus
select * from TABLE;

the "BAD" row should pop out, if not run export and it'll tell you on which row it died. Then you are going to have to blow that record away, and run it again untill it's clean.

Good Luck!

+-------------------------------------------------------------+
| Vitaliy Mogilevskiy                                         |
| Senior Consultant                                           |
| CORE Technology Group, Inc.                                 |
| E-mail:    vit100gain_at_earthlink.net                         |
| Fax :      (707) 516-2163                                   |
| Web Page:  http://home.earthlink.net/~vit100gain/index.html |
|            *** Free DBA Script Library at my Web Page ***   |
+-------------------------------------------------------------+

"Never wrestle a pig - you both get dirty and the pig likes it..." "If the only tool you have is a hammer, everything looks like a nail..."

Andrew Babb wrote:

> Hi Richard,
>
> The first thing you need to know, is where is the corruption!
>
> If the block corruption is in unused space, then you could try and create a DO_NOT_DELETE table over the bad blocks,
> If the corruption is associated with an index, the you could drop the index, create the DO_NOT_DELETE object, and then recreate
> the index,
> If the corruption is associated with a table, then you have a problem (obviously). First you need to try and export the data using
> standard exp, but this will probably fail, so you then need to try the hidden parameter that allows the database to skip a bad
> block (check with Oracle for the parameter, a hint "it's hidden aka underscore), and then re perform the export.
>
> You will need the table with the corruption, and if you are intending to recreate the tablespace, then you also need all other
> objects.
>
> The bad news though is trying to identify what has been corrupted, and what records have been left hanging without the corrupted
> parents, or even parents without the corrupted child. If you are running RI on the database then you can use the validate table
> options.
>
> Good luck,
> Andrew
>
> BTW - To obtain the object that is corrupted, incase you don't know.
>
> Take file_id and block_id reported by DBVerify and pass into this query.
>
> select segement_name, segment_type, tablespace_name
> from dba_extents
> where file_id = &file_id
> and &block_id between block_id and block_id + blocks;
>
>
>
>
> Richard Creasey wrote:
>
>> I'm need to correct two block corruptions indicated with DBVerify.
>>
>> I had two Veritas write errors on Raw files using fast I/O on Solaris
>> 2.6
>> that are used for Oracle Tablespaces which in turn create two errors
>> when
>> DBVerify was run against them.
>>
>> My question is... How you correct bad blocks?
>>
>> Thanks for any help.
>>
>> removespam_creas002_at_mc.duke.edu
>
Received on Thu May 13 1999 - 20:31:22 CDT

Original text of this message

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