I’ve just been paged about a “corrupt block”. At first glance, it’s kind of scary to receive such a message 40 minutes before your shift ends. Right?
After examining an alert.log (see below) and looking through knowledge bases, I found an explanation that wasn’t as bad as I thought it would be. I liked the explanation I found, therefore I decided to share it with the rest of the world.
Here you go, folks!
ALERT.LOG ... Wed Nov 7 23:34:35 2012 Hex dump of (file 55, block 742286) in trace file /u01/db/tech_st/10.2.0/admin/PRDB_host/udump/PRDB_ora_10778.trc Corrupt block relative dba: 0x0dcb538e (file 55, block 742286) Fractured block found during backing up datafile Data in bad block: type: 6 format: 2 rdba: 0x0dcb538e last change scn: 0x002c.5c0523dc seq: 0x2 flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0xc0b10601 check value in block header: 0xafaf computed block checksum: 0xe36e Reread of blocknum=742286, file=/u01/oradata/apps_index_9.dbf. found valid data Wed Nov 7 23:39:11 2012
And a support analyst said:
“Looking at the error, it looks like your Rman backups are running when the error was reported.
Say Rman has read the first 8 OS blocks and by the time it comes to read the remaining 8 OS blocks of 8K oracle block it see’s block has been modified by some server process.
Now since first 8 blocks are from different SCN and next 8 OS blocks of the same oracle blocks are at different SCN Rman cannot back up the block as its fractured.
So it will again retry and try to get a consistent copy (Not read consistent but block having head and tail information same) and went it finds it gives message found valid data.
Please note Rman tries to backup a consistent image of the block(Head and tail portion of the block should match). Oracle blocks are made of 0S blocks.One 8 k block is made of 16 (512 bytes) OS blocks.
So if Rman is unable to get a consistent image of the block it would report errors saying found fractured block while trying to backup that block. Rman would however retry again and see if its now able to get the consistent image of the block .
Clearly in your case we can see it has found a valid block.
Please note it’s recommended to run the Rman backup when the load on the database is less.
If the block that rman wants to backup is been modified quite frequently then rman wouldn’t be able to get a consistent image of the block.”
It’s kind of a nice explanation right? I learned something today. And in the end, my shift finished well. :)
Have a good shift, folks. :)