DBAtlas · データベース運用アトラス

データベースとバックアップの破損を検証(VALIDATE)

OracleRMAN

コマンド

# Physical + logical block check (without producing a backup):
VALIDATE CHECK LOGICAL DATABASE;
# Scan large datafiles in parallel (11g+, needs multiple channels):
VALIDATE CHECK LOGICAL DATABASE SECTION SIZE 16G;
# A single datafile / tablespace:
VALIDATE DATAFILE 7;
VALIDATE TABLESPACE users;
# Read as if taking a backup and check (including archivelogs):
BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
# Readability of a specific backup set:
LIST BACKUP SUMMARY;
VALIDATE BACKUPSET <bs_key>;
-- Corrupt blocks found and the affected segment (SQL):
SELECT file#, block#, blocks, corruption_change#, corruption_type
FROM   v$database_block_corruption ORDER BY file#, block#;
SELECT DISTINCT e.owner, e.segment_name, e.segment_type
FROM   dba_extents e
JOIN   v$database_block_corruption c
  ON   e.file_id = c.file#
 AND   c.block# BETWEEN e.block_id AND e.block_id + e.blocks - 1;

概要

データファイルとバックアップセットを読み取り、物理的なブロック破損および(CHECK LOGICALで)論理的なブロック破損を検出し、結果をv$database_block_corruptionに記録する。SQLクエリで破損ブロックがどの表/インデックスに属するかを表示する。

使用する場面

ORA-01578/ORA-08103などの破損エラーの後、ストレージ問題の後、定期的な(週次)整合性チェックとして。バックアップが実際にリストア可能であることの証明に。

注意

全体を読み取るため、大規模データベースでは大量のI/Oが発生する。ピーク時間帯以外に実行する。dba_extentsのクエリは大規模データベースでは遅い場合がある。破損ブロックが一時(TEMP)領域や空き領域にある場合、オブジェクトは一致しない。

DBAtlas で開く →

関連項目