|
-
anandkl
Since its a table corruption, you need to restore from the the most recent backup.If u dont have a good backup u can do the following which will cause oracle to skip the corrupt block while reading
1 .exec DBMS_REPAIR.ADMIN_TABLES ('REPAIR_ADMIN',1,1,null);
execute this in your schema which will create a table by name REPAIR_ADMIN.You can give your own name.This table will basically store name of objects for which corruption was blocks were skipped
2.variable a number;
exec sys.DBMS_REPAIR.CHECK_OBJECT( 'schema_owner' , table_name' , null, 1, REPAIR_ADMIN', null, null, null, null, :a );
print a;
This will check object for any block corruption and will tell u how many blocks were corrupt.
3.exec DBMS_REPAIR.FIX_CORRUPT_BLOCKS( 'schema_name' , 'table_name' , NULL, 1, 'REPAIR_ADMIN',NULL, :a );
print a;
This will mark the corrupt blocks as been corrupt and this output should be same the output of step 2
4.exec DBMS_REPAIR.skip_corrupt_blocks( 'schema_name' , 'table_name' , 1, 1);
This will mark all the corrupt blocks to be skipped when the process reads this blocks.
5. exec DBMS_REPAIR.rebuild_freelists( 'schema_name' , 'table_name' , null, 1);
This will rebuild the freelists for the table
If using this method all the data in corrupt block will be lost.
So the best way to fix the corrupt block is do drop the table and do recover from the most recent backup..
All the best in fixing the block corruption.
please come back if you have any questions.
we faced the same problem
regards
anandkl
anandkl
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|