11 copyright © 2004, oracle. all rights reserved. dealing with database corruption

22
11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

Upload: janel-jennings

Post on 05-Jan-2016

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11Copyright © 2004, Oracle. All rights reserved.

Dealing with Database Corruption

Page 2: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-2 Copyright © 2004, Oracle. All rights reserved.

Objectives

After completing this lesson, you should be able to:

• Describe causes of database corruption:– Hardware– Software

• Detect database corruption using:– ANALYZE– dbverify– DB_BLOCK_CHECKING– DBMS_REPAIR

• Repair corruptions using RMAN

Page 3: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-3 Copyright © 2004, Oracle. All rights reserved.

What Is Block Corruption?

• Whenever a block is read or written, a consistency check is performed:– Block version– DBA (data block address) value in cache as

compared to the DBA value in the block buffer– Block-checksum, if enabled

• There are two types of block corruption:– Media corrupt– Soft corrupt

Page 4: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-4 Copyright © 2004, Oracle. All rights reserved.

Block Corruption Symptoms: ORA-1578

ORA-01578: “ORACLE data block corrupted(file # %s, block # %s)”• This error is generated when a corrupted data

block is found.

• The error always returns the absolute file number and block number.

• Check the alert.log file.

Page 5: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-5 Copyright © 2004, Oracle. All rights reserved.

DBVERIFY Utility

• Only works on data files; redo log files cannot be checked.

• Checks block consistency.

• Can be used while the database is open.

$ dbv file=/u01/oradata/users01.dbf \ blocksize=8192

Page 6: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-6 Copyright © 2004, Oracle. All rights reserved.

Interpreting DBVERIFY

• Page number is the block number in the data file.

• If head and tail do not match, DBVERIFY re-reads the block. If they match, an influx block is reported, otherwise a corruption is signaled.

DBVERIFY - Verification completeTotal Pages Examined : 640Total Pages Processed (Data) : 88Total Pages Failing (Data) : 0Total Pages Processed (Index): 18Total Pages Failing (Index): 0...Total Pages Empty : 406Total Pages Marked Corrupt : 0Total Pages Influx : 0

Page 7: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-8 Copyright © 2004, Oracle. All rights reserved.

The ANALYZE Command

• Performs a logical block check

• Does not mark blocks as soft corrupt; only reports them

• Validates index and table entries

SQL> ANALYZE TABLE table_name VALIDATE 2 STRUCTURE CASCADE;

SQL> ANALYZE INDEX index_name VALIDATE 2 STRUCTURE;

Page 8: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-9 Copyright © 2004, Oracle. All rights reserved.

Initialization Parameter DB_BLOCK_CHECKING

• Can be set by using the ALTER SESSION or ALTER SYSTEM DEFERRED command

• Controls whether the database performs block checking for data blocks

• Default value is FALSE• Is helpful in preventing memory and data

corruption

Page 9: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-10 Copyright © 2004, Oracle. All rights reserved.

How to Handle Corruptions

• Check the alert log and operating system log file.

• Use available diagnostic tools to find out the type of corruption.

• Determine whether the error persists by running checks multiple times.

• Recover data from the corrupted object if necessary.

Page 10: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-11 Copyright © 2004, Oracle. All rights reserved.

How to Handle Corruptions

• Resolve any hardware issues:– Memory boards– Disk controllers– Disks

• Recover or restore data from the corrupt object if necessary.

Page 11: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-12 Copyright © 2004, Oracle. All rights reserved.

Using Flashback for Logical Corruption

DBA

USER

Undo SQL or

Flashback Table

Corruptdata found

Flashback Versions

Query

Flashback Transaction

Query

Page 12: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-13 Copyright © 2004, Oracle. All rights reserved.

The DBMS_REPAIR Package

Available procedures:

• CHECK_OBJECT• FIX_CORRUPT_BLOCKS• DUMP_ORPHAN_KEYS• REBUILD_FREELISTS• SEGMENT_FIX_STATUS• SKIP_CORRUPT_BLOCKS • ADMIN_TABLES

Page 13: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-14 Copyright © 2004, Oracle. All rights reserved.

Using DBMS_REPAIR

1. Detect and report corruptions.

2. Evaluate the costs and benefits of DBMS_REPAIR.

SET SERVEROUTPUT ONDECLARE num_corrupt INT;BEGIN num_corrupt := 0; DBMS_REPAIR.CHECK_OBJECT ( schema_name => ‘HR', object_name => 'DEPARTMENTS', repair_table_name => 'REPAIR_TABLE', corrupt_count => num_corrupt);END;

Page 14: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-16 Copyright © 2004, Oracle. All rights reserved.

Using DBMS_REPAIR

3. Make objects usable.

SET SERVEROUTPUT ONDECLARE num_fix INT;BEGIN num_fix := 0; DBMS_REPAIR.FIX_CORRUPT_BLOCKS ( schema_name => 'HR', object_name => 'DEPARTMENTS', object_type => DBMS_REPAIR.TABLE_OBJECT, repair_table_name => 'REPAIR_TABLE', fix_count => num_fix);END;

Page 15: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-17 Copyright © 2004, Oracle. All rights reserved.

Using DBMS_REPAIR

4. Repair corruptions and rebuild lost data.

SET SERVEROUTPUT ONDECLARE num_orphans INT;BEGIN num_orphans := 0; DBMS_REPAIR.DUMP_ORPHAN_KEYS ( schema_name => 'SCOTT', object_name => 'PK_DEPT', object_type => DBMS_REPAIR.INDEX_OBJECT, repair_table_name => 'REPAIR_TABLE', orphan_table_name => 'ORPHAN_KEY_TABLE', key_count => num_orphans); DBMS_OUTPUT.PUT_LINE('orphan key count: ' || TO_CHAR(num_orphans));END;

Page 16: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-18 Copyright © 2004, Oracle. All rights reserved.

Block Media Recovery (BMR)

• BMR lowers the mean time to recover (MTTR).

• BMR increases availability during media recovery.– The data file remains online during recovery– Only blocks being recovered are inaccessible

• BMR is invoked through RMAN via the BLOCKRECOVER command.– Restores individual blocks from available backups– Coordinates with the server to have them recovered

Tape

Page 17: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-19 Copyright © 2004, Oracle. All rights reserved.

The BLOCKRECOVER Command

• BMR is implemented through the RMAN BLOCKRECOVER command.

• BLOCKRECOVER identifies the backups containing the blocks to recover.

• The command reads the backups and accumulates requested blocks into in-memory buffers.

• BLOCKRECOVER manages the block media recovery session by reading the archive logs from backup if necessary.

RMAN> BLOCKRECOVER DATAFILE 6 BLOCK 3;

Page 18: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-20 Copyright © 2004, Oracle. All rights reserved.

RMAN BMR Interface

• The list of corrupted database blocks is stored in the V$DATABASE_BLOCK_CORRUPTION view.

• The CORRUPTION LIST clause specifies the recovery of all blocks that are listed in this view.

• RMAN lists corruptions in backup sets and proxy copies in two views:– V$BACKUP_CORRUPTION– V$COPY_CORRUPTION

RMAN> BLOCKRECOVER CORRUPTION LIST 2> RESTORE UNTIL TIME 'sysdate – 10';

Page 19: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-21 Copyright © 2004, Oracle. All rights reserved.

Examples of BLOCKRECOVER

• Recovering a group of corrupt blocks

• Limiting block media recovery by type of restore

• Limiting block media recovery by backup tag

• Limiting block media recovery by time, SCN, or log sequence

Page 20: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-23 Copyright © 2004, Oracle. All rights reserved.

Which Object Is Corrupted?

• Table: The data in the corrupted block is lost– Drop the table and re-create it, and import data from

an export dump– Use SQL or PL/SQL to pull data out of the table into

a newly created table

• Index: Drop and recreate the index

Page 21: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-24 Copyright © 2004, Oracle. All rights reserved.

Summary

In this lesson, you should have learned how to:

• Describe causes of database corruption:– Hardware– Software

• Detect database corruption using:– ANALYZE– dbverify– DB_BLOCK_CHECKING– DBMS_REPAIR

• Repair corruptions using RMAN

Page 22: 11 Copyright © 2004, Oracle. All rights reserved. Dealing with Database Corruption

11-25 Copyright © 2004, Oracle. All rights reserved.

Practice 11 Overview:Dealing with Database Corruption

This practice covers the following topics:

• Using dbverify to detect database corruption

• Performing block media recovery with RMAN