RMAN reported some blocks to be damaged in the datafile, I found the object (2 tables), found that blocks were marked as soft damaged and since tables weren`t a part of something critical I simply copied data into diff. location and recreated both tables.
Now out of 31 damaged blocks for some reason I have 4 left.
database_block_corruption view says:
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTION_TYPE
14 29 4 0 FRACTURED
select * from dba_extents where file_id = 14
and 29 between block_id and block_id+blocks -1
returns nothing for 29-33 blocks so I supposed those blocks are unused. RMAN still produces this in alert log:
Corrupt block relative dba: 0x0380001f (file 14, block 31)
Bad header found during buffer read
Data in bad block -
type: 78 format: 7 rdba: 0x545f4f50
last change scn: 0x500a.545f4752 seq: 0x2e flg: 0x20
consistency value in tail: 0x20435553
check value in block header: 0x2e20, block checksum disabled
spare1: 0x41, spare2: 0x54, spare3: 0x6578
Reread of rdba: 0x0380001f (file 14, block 31) found same corrupted data
Thu Oct 7 15:44:52 2004
For now I included:
set maxcorrupt for datafile '/oracle_db0/oradata/ENKLAV/tbl2_2.dbf' to 999;
into RMAN script but it is not a solution! Why those 4 blocks weren`t released?
1. What's the max block_id being used by a segment (on that datafile)? If that's lesser than 31, resize the datafile.
If "select * from dba_extents where file_id = 14
and 29 between block_id and block_id+blocks -1"
returns nothing, you might be able to shrink the datafile and get rid of the corruption (if you're really lucky). Resize the datafile to the smallest possible value, then run ur dbverify.
2. If the corruption still exists, too bad. Fractured blocks cannot be fixed using dbms_repair. All you can do is sort of work around it. "Set maxcorrupt on file ## to 5;" within RMAN and RMAN will ignore the corrupt blocks during backup. All you can do is create a new tablespace, export stuff, then drop the old one.
It's nice that rman found the blocks and all but you are missiing the root cause, have you done dilliegence on what cause the corrupt block and fixed it? where there's smoke there's fire, I'll bet if you don't fix this eventually you'll see rman reporting more of these. Try the basics like scan disks, check controllers, check sys logs