0% found this document useful (0 votes)
281 views4 pages

Production DB Block Corruption

The document describes steps to resolve database block corruption issues in an Oracle database. It involves verifying that corrupted blocks do not belong to any database objects, shrinking the datafile to remove corrupted blocks, and resizing it back to the original size. After these steps, a dbverify check shows no remaining corrupted blocks.

Uploaded by

vinay234
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
281 views4 pages

Production DB Block Corruption

The document describes steps to resolve database block corruption issues in an Oracle database. It involves verifying that corrupted blocks do not belong to any database objects, shrinking the datafile to remove corrupted blocks, and resizing it back to the original size. After these steps, a dbverify check shows no remaining corrupted blocks.

Uploaded by

vinay234
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 4

Problem Verification

dbv file=/oracle/PROD/db/apps_st/data/system09.dbf blocksize=8192 DBVERIFY - Verification complete Total Pages Examined : 192128 Total Pages Processed (Data) : 55754 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 27234 Total Pages Failing (Index): 0 Total Pages Processed (Other): 1990 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 80677 Total Pages Marked Corrupt : 26473 Total Pages Influx : 0 Total Pages Encrypted : 0 Highest block SCN : 3789579966 (1388.3789579966) SQL> select * from v$database_block_corruption; FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO ---------- ---------- ---------- ------------------ --------352 165657 1 0 ALL ZERO 352 165656 1 0 CORRUPT

Solution (If Corrupted Blocks are Not Belonging to Any Object/Segment)


First Verify that blocks are not belonging to any segment. SQL> select RELATIVE_FNO from DBA_DATA_FILES where FILE_NAME='/oracle/DEV/db/apps_st/data/system09.dbf'; RELATIVE_FNO -----------352 SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE, RELATIVE_FNO FROM DBA_EXTENTS WHERE FILE_ID = 352 AND 165657 BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1; SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE, RELATIVE_FNO FROM DBA_EXTENTS WHERE FILE_ID = 352 AND 165656 BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1; SQL> select segment_name, segment_type, tablespace_name, file_id, relative_fno from dba_extents where file_id=352; Set $ORACLE_SID and $ORACLE_HOME appropriately if not already set.

Start RMAN in nocatalog mode and connect to r database: From the operating system prompt issue: $ rman target / nocatalog or $ rman target sys/<sys_password> nocatalog From the RMAN> prompt issue the validate command with the "check logical" clause: The following example shows how to validate all datafiles: run { allocate channel d1 type disk; backup check logical validate database; release channel d1; } Execute the script create table segment_corrupted (owner varchar2(10), segment_name varchar2(50), segment_type varchar(20)); truncate table segment_corrupted; set serveroutput on declare nrows number; badsegs number; begin badsegs:=0; nrows:=0; for i in (select file#,block# from v$database_block_corruption) loop begin insert into segment_corrupted select owner, segment_name, segment_type from dba_extents where file_id=i.file# and i.block# between block_id and block_id + blocks -1; end; nrows:=nrows+1; end loop; commit; if nrows>0 then dbms_output.put_line('List of segments affected by corruption'); end if; for i in (select distinct owner, segment_name, segment_type from segment_corrupted) loop dbms_output.put_line(i.segment_type||' '||i.owner||'.'||i.segment_name); badsegs:=badsegs+1; end loop; dbms_output.put_line('Total blocks corrupted: '||to_char(nrows)||'. Total segments affected: '|| to_char(badsegs)); end; / SQL> select * from v$database_block_corruption; FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO

---------- ---------- ---------- ------------------ --------352 165656 26473 0 ALL ZERO Check what the minimal size is this datafile can be shrinked to using the note: Note.130866.1 How to Resolve ORA-03297 When Resizing a Datafile by Finding the Table Highwatermark select a.tablespace_name ,a.file_name ,(b.maximum+c.blocks-1)*d.db_block_size highwater from dba_data_files a ,(select file_id,max(block_id) maximum from dba_extents group by file_id) b ,dba_extents c ,(select value db_block_size from v$parameter where name='db_block_size') d where a.file_id = b.file_id and c.file_id = b.file_id and c.block_id = b.maximum order by a.tablespace_name,a.file_name / File Size = 1573912576 Lowest Possible Size = 722739200 Shrink datafile /oracle/PROD/db/apps_st/data/system09.dbf to the lowest possible size and resize it back to it current size after having checked NO corrupt blocks are left. SQL> alter database datafile '/oracle/PROD/db/apps_st/data/system09.dbf' resize 722739200; Database altered. SQL> alter database datafile '/oracle/PROD/db/apps_st/data/system09.dbf' resize 1573912576; Database altered. DBVERIFY: Release 11.1.0.7.0 - Production on Sat Apr 24 22:47:23 2010 Copyright (c) 1982, 2007, Oracle. All rights reserved. DBVERIFY - Verification starting : FILE = /oracle/PROD/db/apps_st/data/system09.dbf DBVERIFY - Verification complete Total Pages Examined : 192128 Total Pages Processed (Data) : 55754 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 27233 Total Pages Failing (Index): 0 Total Pages Processed (Other): 1989 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 107152 Total Pages Marked Corrupt : 0 Total Pages Influx : 0

Total Pages Encrypted : 0 Highest block SCN : 3790638247 (1388.3790638247) SQL> select * from v$database_block_corruption; no rows selected ================= PROBLEM RESOLVED. =================

You might also like