1 / 22

Dealing with Database Corruption

Dealing with Database Corruption. 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.

chaman
Télécharger la présentation

Dealing with Database Corruption

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dealing with Database Corruption

  2. 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

  3. 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

  4. 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.

  5. 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

  6. 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 complete Total Pages Examined : 640 Total Pages Processed (Data) : 88 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 18 Total Pages Failing (Index): 0 ... Total Pages Empty : 406 Total Pages Marked Corrupt : 0 Total Pages Influx : 0

  7. 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;

  8. Initialization Parameter DB_BLOCK_CHECKING • Can be set by using the ALTERSESSION or ALTER SYSTEMDEFERRED command • Controls whether the database performs block checking for data blocks • Default value is FALSE • Is helpful in preventing memory and data corruption

  9. 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.

  10. How to Handle Corruptions • Resolve any hardware issues: • Memory boards • Disk controllers • Disks • Recover or restore data from the corrupt object if necessary.

  11. Using Flashback for Logical Corruption Flashback Versions Query Flashback Transaction Query DBA Corruptdata found Undo SQL or Flashback Table USER

  12. The DBMS_REPAIR Package • Available procedures: • CHECK_OBJECT • FIX_CORRUPT_BLOCKS • DUMP_ORPHAN_KEYS • REBUILD_FREELISTS • SEGMENT_FIX_STATUS • SKIP_CORRUPT_BLOCKS • ADMIN_TABLES

  13. Using DBMS_REPAIR • Detect and report corruptions. • Evaluate the costs and benefits of DBMS_REPAIR. SET SERVEROUTPUT ON DECLARE 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;

  14. Using DBMS_REPAIR • Make objects usable. SET SERVEROUTPUT ON DECLARE 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;

  15. Using DBMS_REPAIR • Repair corruptions and rebuild lost data. SET SERVEROUTPUT ON DECLARE 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;

  16. 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

  17. 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;

  18. RMAN BMR Interface • The list of corrupted database blocks is stored in the V$DATABASE_BLOCK_CORRUPTION view. • The CORRUPTIONLIST 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';

  19. 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

  20. 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

  21. 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

  22. 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

More Related