Wednesday 27 August 2014

Block corruption

     1)     Create a  tablespace

SQL> create tablespace abc datafile 'C:\APP\USER\ORADATA\MYDATABASE\abc.dbf' size 200k;


2) Connect the user create a table in above tablespaces

SQL> conn scott/tiger
Connected.
SQL> create table abc (name varchar(10)) tablespace abc;
Table created.
SQL> insert into abc values('currpt blk');
1 row created.
SQL> commit;
commit complete.

3) Take tablespace offline

SQL> conn / as sysdba
Connected.
SQL> alter tablespace abc offline;
Tablespace altered.

4) Open the datafile belongs to above tablespace and edit the file change 'currpt blk' to block

5)Change status of tablespace  online

SQL> alter tablespace abc online;
Tablespace altered.

6) Now  access the data from the table

SQL> conn scott/tiger
Connected.
SQL> select * from abc;
select * from abc
              *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 5, block # 11)
ORA-01110: data file 5: 'C:\APP\USER\ORADATA\MYDATABASE\ABC.DBF'




7)  Run the DBV utility find the corrupted block

\BIN>dbv   file =C:\APP\USER\ORADATA\MYDATABASE\abc.dbf

DBVERIFY: Release 11.2.0.1.0 - Production on Wed Aug 10 17:41:13 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

DBVERIFY - Verification starting : FILE = C:\APP\USER\ORADATA\MYDATABASE\ABC.DBF
Page 11 is marked corrupt
Corrupt block relative dba: 0x0140000b (file 5, block 11)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x0140000b
 last change scn: 0x0000.001096fc seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x96fc0601
 check value in block header: 0xe8f3
 computed block checksum: 0x1a00

DBVERIFY - Verification complete

Total Pages Examined         : 25
Total Pages Processed (Data) : 4
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 10
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 10
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 1087227 (0.1087227)


8) Connect the Rman and recover the block using clockrecover command

C:\app\user\product\11.2.0\dbhome_1\BIN>rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Wed Aug 10 17:41:50 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: MYDATABA (DBID=1269509988)

RMAN> blockrecover datafile 5 block 11;

Starting recover at 10-AUG-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=142 device type=DISK

channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00005
channel ORA_DISK_1: reading from backup piece C:\APP\USER\FLASH_RECOVERY_AREA\MYDATABASE\BACKUPSET\2
011_08_10\O1_MF_NNNDF_TAG20110810T173411_744WXXQG_.BKP
channel ORA_DISK_1: piece handle=C:\APP\USER\FLASH_RECOVERY_AREA\MYDATABASE\BACKUPSET\2011_08_10\O1_
MF_NNNDF_TAG20110810T173411_744WXXQG_.BKP tag=TAG20110810T173411
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:02

starting media recovery
media recovery complete, elapsed time: 00:00:03

Finished recover at 10-AUG-11

RMAN>


You can find the  corrupt block for particular  object as given below

select tablespace_id,HEADER_FILE,header_block,segment_type from  SYS_dba_SEGS where segment_na
me like 'ABC'
SQL> /

TABLESPACE_ID HEADER_FILE HEADER_BLOCK SEGMENT_TYPE
------------- ----------- ------------ ------------------
            6                  1547 TABLE


C:\oracle\product\10.2.0\db_1\BIN>dbv userid=scott/tiger segment_id=6.5.1547














No comments: