Monday, 6 February 2012

Repair the Block Corruption

Repair the Block Corruption

ERROR1:

Corrupt Block Found
         TSN = 381, TSNAME = APPS_TS_TX_DATA
         RFN = 402, BLK = 160267, RDBA = 1686270475
         OBJN = 158628, OBJD = 262427, OBJECT = AD_SNAPSHOT_FILES, SUBOBJECT =
         SEGMENT OWNER = APPLSYS, SEGMENT TYPE = Table Segment

ERROR2:
Corrupt Block Found
         TSN = 383, TSNAME = APPS_TS_SEED
         RFN = 407, BLK = 138012, RDBA = 1707219740
         OBJN = 240862, OBJD = 261266, OBJECT = JDR_PATHS_N1, SUBOBJECT =
         SEGMENT OWNER = APPLSYS, SEGMENT TYPE = Index Segment


SOLUTION ERROR-1:


STEP1: Create Scripts of block1.sql,block2.sql,block3.sql,block4.sql,block5.sql,block6.sql,block7.sql

Script-1:
[oracle@ebs1 block]$ vi block1.sql
BEGIN
  DBMS_REPAIR.ADMIN_TABLES
  (
     TABLE_NAME => 'REPAIR_TABLE',
     TABLE_TYPE => DBMS_REPAIR.REPAIR_TABLE,
     ACTION     => DBMS_REPAIR.CREATE_ACTION,
     TABLESPACE => 'APPS_TS_SEED'
  );
END;
/

Script-2:
[oracle@ebs1 block]$ vi block2.sql

BEGIN
  DBMS_REPAIR.ADMIN_TABLES
  (
     TABLE_NAME => 'ORPHAN_KEY_TABLE',
     TABLE_TYPE => DBMS_REPAIR.ORPHAN_TABLE,
     ACTION     => DBMS_REPAIR.CREATE_ACTION,
     TABLESPACE => 'APPS_TS_SEED'
  );
END;
/


Script-3:
[oracle@ebs1 block]$ vi block3.sql


SET SERVEROUTPUT ON
DECLARE
  vCorruptBlocks INT := 0;
BEGIN
  DBMS_REPAIR.CHECK_OBJECT
  (
     SCHEMA_NAME => 'APPLSYS',
     OBJECT_NAME => 'AD_SNAPSHOT_FILES',
     REPAIR_TABLE_NAME => 'REPAIR_TABLE',
     CORRUPT_COUNT =>  vCorruptBlocks
  );
  DBMS_OUTPUT.PUT_LINE('Number of blocks corrupted: ' || TO_CHAR (vCorruptBlocks));
END;
/
~


Script-4:
[oracle@ebs1 block]$ vi block4.sql


column object_name format a10
column repair_description format a28
set lines 10000
SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, REPAIR_DESCRIPTION
FROM REPAIR_TABLE;


Script-5:
[oracle@ebs1 block]$ vi block5.sql


SET SERVEROUTPUT ON
DECLARE
  vBlocksFixed INT := 0;
BEGIN
  DBMS_REPAIR.FIX_CORRUPT_BLOCKS
  (
     SCHEMA_NAME => 'APPLSYS',
     OBJECT_NAME=> 'AD_SNAPSHOT_FILES',
     OBJECT_TYPE => DBMS_REPAIR.TABLE_OBJECT,
     REPAIR_TABLE_NAME => 'REPAIR_TABLE',
     FIX_COUNT => vBlocksFixed
  );
  DBMS_OUTPUT.PUT_LINE('Number of blocks fixed: ' || TO_CHAR(vBlocksFixed));
END;
/
~
~

Script-6:
[oracle@ebs1 block]$ vi block6.sql


BEGIN
  DBMS_REPAIR.SKIP_CORRUPT_BLOCKS
  (
     SCHEMA_NAME => 'APPLSYS',
     OBJECT_NAME => 'AD_SNAPSHOT_FILES',
     OBJECT_TYPE => DBMS_REPAIR.TABLE_OBJECT,
     FLAGS => DBMS_REPAIR.SKIP_FLAG
  );
END;
/

Script-7:
[oracle@ebs1 block]$ vi block7.sql


select owner , table_name , skip_corrupt
from   dba_tables
where  table_name = 'AD_SNAPSHOT_FILES';

STEP 2: Execute the Scripts

SQL> @/oracle/block/block1.sql

PL/SQL procedure successfully completed.

SQL> @/oracle/block/block2.sql

PL/SQL procedure successfully completed.

SQL> @/oracle/block/block3.sql
Number of blocks corrupted: 1

PL/SQL procedure successfully completed.

SQL>  @/oracle/block/block4.sql

OBJECT_NAM   BLOCK_ID CORRUPT_TYPE MARKED_COR REPAIR_DESCRIPTION
---------- ---------- ------------ ---------- ----------------------------
AD_SNAPSHO     160267         6148 TRUE       mark block software corrupt
T_FILES


SQL>  @/oracle/block/block5.sql
Number of blocks fixed: 0

PL/SQL procedure successfully completed.

SQL>  @/oracle/block/block6.sql

PL/SQL procedure successfully completed.

SQL>  @/oracle/block/block7.sql

OWNER                          TABLE_NAME                     SKIP_COR
------------------------------ ------------------------------ --------
APPLSYS                        AD_SNAPSHOT_FILES              ENABLED

SQL> conn applsys/apps
Connected.
SQL>  create table AD_SNAPSHOT_FILES_BK as select * from AD_SNAPSHOT_FILES;

Table created.

SQL> select count(*) from AD_SNAPSHOT_FILES_BK;

  COUNT(*)
----------
   1735127

SQL> drop table AD_SNAPSHOT_FILES;

Table dropped.

SQL> create table AD_SNAPSHOT_FILES as select * from AD_SNAPSHOT_FILES_BK;

Table created.

SQL> select count(*) from AD_SNAPSHOT_FILES;

  COUNT(*)
----------
   1735127

SQL>  conn sys/sys as sysdba
Connected.
SQL> @/oracle/block/block3.sql
Number of blocks corrupted: 0

PL/SQL procedure successfully completed.


SOLUTION ERROR-2:

SQL> conn applsys/apps
Connected.
SQL>  alter index JDR_PATHS_N1 rebuild online;

Index altered.

No comments:

Post a Comment