DBAsupport.com Forums - Powered by vBulletin
Results 1 to 5 of 5

Thread: How to remove orphan fractured blocks?

  1. #1
    Join Date
    Dec 2000
    Posts
    43

    Red face How to remove orphan fractured blocks?

    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

    query
    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?

    WHAT DOES IT WANT AND HOW TO FIX IT?
    Last edited by utkinpol; 10-07-2004 at 04:59 PM.

  2. #2
    Join Date
    Oct 2002
    Posts
    807
    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.

  3. #3
    Join Date
    Dec 2000
    Posts
    43
    Thanks. I figured out the same. It`s quite frustrating.

    Hopefully those blocks will be reused and overwritten in some distant future...

  4. #4
    Join Date
    Oct 2002
    Posts
    807
    Originally posted by utkinpol
    Hopefully those blocks will be reused and overwritten in some distant future...
    Actually, you don't want them to be reused. A fractured block is physical corruption for all practical purposes. You don't want anything to get written to it.

  5. #5
    Join Date
    Aug 2002
    Location
    Atlanta
    Posts
    1,187
    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
    I'm stmontgo and I approve of this message

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Click Here to Expand Forum to Full Width