ERROR: SAVE Undo Block Corrupted. Error Code = 50
Date: Fri, 11 Jul 2014 08:46:47 -0500
Message-ID: <CAKoJ+qDY8=WgAa4MbMQ4oZOGzEHBWYYrhs6OjiWOK=HLMSVORA_at_mail.gmail.com>
Hello list,
I might have a interesting error at hand, Please note i already have opened a ticket with oracle, but not getting good enough response. We started doing RMAN backup of one of our system(backup check logical database...) and found that there is some corruption on the system datafile. When i ran DBV i get the below errors and DBV also says "Total Pages Marked Corrupt : 0". We do not know how long this corruption has been in our system as we recently started doing RMAN backup on it and that failed on FIRST day of our backup.
Selecting out of v$database_block_corruption show we have about 43 blocks thats are corrupted and CORRUPTION_TYPE is UNKNOWN and when i try to find out which segments are affected. They are all empty blocks.
Oracle answer was "We have no other options or workarounds other than rebuilding this database, or setting the maxcorrupt clause for that datafile"
i supposed i can live with setting up maxcorrupt caluse i our backup script, but what worries me the most is that this is datafile#1(system datafile).
i tried following this note "How to Format Corrupted Block Not Part of Any Segment (Doc ID 336133.1)" but that dose not seem to help, and there is a big DISCLAIMER that says :-The steps given in this note are not always guaranteed to work.
Also the below error on DBV are something i could not find anything on oracle support or google. Oracle version is 10.2.0.5 and do note this is a dictionary manage tablespace. One more wierd part about this error. When i run "backup validate check logical datafile 1", in the alert log we get error pointing to datafile# 16. DBV on that datafile dose not produce any error(also ran backup validate check logical datafile 16 followed by select on v$database_block_corruption and no errors there), this datafile 16 is part of a tablespace that is also dictionary managed tablespace. This DB has multiple tablespace, half of them locally managed and half dictionary managed(back from 8i incarnation of this database).
Error backing up file 16, block 12557: logical corruption Error backing up file 16, block 12561: logical corruption Error backing up file 16, block 12589: logical corruption Error backing up file 16, block 12593: logical corruption
So my question is how do i get rid of this? Is there a way to insert rows into a specific block, so that it can be reformatted ? I have also attached output.txt file of DBV and select on v$database_block_corruption for better readability(in case needed by someone).
$ dbv file=/oracle/SID/system_1/system.data1
DBVERIFY: Release 10.2.0.5.0 - Production on Fri Jul 11 08:04:18 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /oracle/SID/system_1/system.data1
Block Checking: DBA = 67121421, Block Type = Save undo data block
ERROR: SAVE Undo Block Corrupted. Error Code = 50
kts4subck: record (3) seq# (0), split flag (0)
and total pieces(0)
Block Checking: DBA = 67121425, Block Type = Save undo data block
ERROR: SAVE Undo Block Corrupted. Error Code = 50
kts4subck: record (3) seq# (0), split flag (0)
and total pieces(0)
Block Checking: DBA = 67121453, Block Type = Save undo data block
ERROR: SAVE Undo Block Corrupted. Error Code = 50
kts4subck: record (3) seq# (0), split flag (0)
and total pieces(0)
........ ........
........ ====> Same as above errors
........
DBVERIFY - Verification complete
Total Pages Examined : 32000 Total Pages Processed (Data) : 17136 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 13619 Total Pages Failing (Index): 0 Total Pages Processed (Other): 1215 Total Pages Processed (Seg) : 1 Total Pages Failing (Seg) : 0 Total Pages Empty : 30 Total Pages Marked Corrupt : 0 Total Pages Influx : 0 Highest block SCN : 2826666056 (458.2826666056)$
SQL> select * from v$database_block_corruption order by 1,2,3,4 2 ;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
----- ------ ------ ------------------ --------- 1 12557 1 1 UNKNOWN 1 12561 1 1 UNKNOWN 1 12589 1 1 UNKNOWN 1 12593 1 1 UNKNOWN 1 12597 1 1 UNKNOWN 1 12665 1 1 UNKNOWN 1 12667 1 1 UNKNOWN 1 12715 1 1 UNKNOWN 1 12719 1 1 UNKNOWN 1 12723 1 1 UNKNOWN 1 12727 1 1 UNKNOWN 1 12731 1 1 UNKNOWN 1 12735 1 1 UNKNOWN 1 12739 1 1 UNKNOWN 1 12743 1 1 UNKNOWN 1 12747 1 1 UNKNOWN 1 12751 1 1 UNKNOWN 1 12755 1 1 UNKNOWN 1 12759 1 1 UNKNOWN 1 12763 1 1 UNKNOWN 1 12767 1 1 UNKNOWN 1 12771 1 1 UNKNOWN 1 12775 1 1 UNKNOWN 1 12779 1 1 UNKNOWN 1 12783 1 1 UNKNOWN 1 12787 1 1 UNKNOWN 1 12791 1 1 UNKNOWN 1 12795 1 1 UNKNOWN 1 12799 1 1 UNKNOWN 1 12803 1 1 UNKNOWN 1 12807 1 1 UNKNOWN 1 12811 1 1 UNKNOWN 1 12815 1 1 UNKNOWN 1 12819 1 1 UNKNOWN 1 12823 1 1 UNKNOWN 1 12827 1 1 UNKNOWN 1 12831 1 1 UNKNOWN 1 12835 1 1 UNKNOWN 1 12999 1 1 UNKNOWN 1 13003 1 1 UNKNOWN 1 13007 1 1 UNKNOWN 1 13011 1 1 UNKNOWN 1 14413 4 1 UNKNOWN
43 rows selected.
SQL> SQL> SELECT e.owner, e.segment_type, e.segment_name, e.partition_name, c.file#
2 , greatest(e.block_id, c.block#) s_blk# 3 , least(e.block_id+e.blocks-1, c.block#+c.blocks-1) e_dblk# 4 , least(e.block_id+e.blocks-1, c.block#+c.blocks-1) 5 - greatest(e.block_id, c.block#) + 1 blk_corrupt 6 , null description
7 FROM dba_extents e, v$database_block_corruption c 8 WHERE e.file_id = c.file#
9 AND e.block_id <= c.block# + c.blocks - 1 AND e.block_id + e.blocks - 1 >= c.block#
10 UNION
11 SELECT s.owner, s.segment_type, s.segment_name, s.partition_name, c.file#
12 , header_block s_blk# 13 , header_block e_blk# , 1 blk_corrupt 14 15 , 'Segment Header' description16 FROM dba_segments s, v$database_block_corruption c WHERE s.header_file = c.file#
AND s.header_block between c.block# and c.block# + c.blocks - 1 17 18 19 UNION
20 SELECT null owner, null segment_type, null segment_name, null partition_name, c.file#
21 , greatest(f.block_id, c.block#) s_blk# 22 , least(f.block_id+f.blocks-1, c.block#+c.blocks-1) e_blk# , least(f.block_id+f.blocks-1, c.block#+c.blocks-1) 23 24 - greatest(f.block_id, c.block#) + 1 blk_corrupt , 'Free Block' description
25 26 FROM dba_free_space f, v$database_block_corruption c 27 WHERE f.file_id = c.file#
AND f.block_id <= c.block# + c.blocks - 1 AND f.block_id + f.blocks - 1 >= c.block#
28 29 order by file#, s_blk#
30 ;
OWNER SEGMENT_TYPE SEGMENT_NAME PARTITION_NAME FILE# S_BLK# E_DBLK# BLK_CORRUPT DESCRIPTION -------------------- ------------------ ------------------------- ------------------------- ----- ------ ---------- ----------- -------------- 1 12557 12557 1 Free Block 1 12561 12561 1 Free Block 1 12589 12589 1 Free Block 1 12593 12593 1 Free Block 1 12597 12597 1 Free Block 1 12665 12665 1 Free Block 1 12667 12667 1 Free Block 1 12715 12715 1 Free Block 1 12719 12719 1 Free Block 1 12723 12723 1 Free Block 1 12727 12727 1 Free Block 1 12731 12731 1 Free Block 1 12735 12735 1 Free Block 1 12739 12739 1 Free Block 1 12743 12743 1 Free Block 1 12747 12747 1 Free Block 1 12751 12751 1 Free Block 1 12755 12755 1 Free Block 1 12759 12759 1 Free Block 1 12763 12763 1 Free Block 1 12767 12767 1 Free Block 1 12771 12771 1 Free Block 1 12775 12775 1 Free Block 1 12779 12779 1 Free Block 1 12783 12783 1 Free Block 1 12787 12787 1 Free Block 1 12791 12791 1 Free Block 1 12795 12795 1 Free Block 1 12799 12799 1 Free Block 1 12803 12803 1 Free Block 1 12807 12807 1 Free Block 1 12811 12811 1 Free Block 1 12815 12815 1 Free Block 1 12819 12819 1 Free Block 1 12823 12823 1 Free Block 1 12827 12827 1 Free Block 1 12831 12831 1 Free Block 1 12835 12835 1 Free Block 1 12999 12999 1 Free Block 1 13003 13003 1 Free Block 1 13007 13007 1 Free Block 1 13011 13011 1 Free Block 1 14413 14416 4 Free Block
43 rows selected.
SQL>
-- http://www.freelists.org/webpage/oracle-lReceived on Fri Jul 11 2014 - 15:46:47 CEST
- text/plain attachment: output.txt