OracleのVALIDATEコマンドとV$DATABASE_BLOCK_CORRUPTIONの活用

Oracle Master Gold

Oracleデータベースの管理において、データブロックの破損を事前に検出することは非常に重要です。本記事では、データブロックの破損をチェックするためのVALIDATEコマンドとV$DATABASE_BLOCK_CORRUPTIONビューについて詳しく解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

1. VALIDATEコマンドとは

OracleのVALIDATEコマンドは、データブロックの整合性をチェックするために使用されます。特にBACKUP VALIDATEコマンドと組み合わせることで、データブロックの破損を発見し、バックアップの整合性を確認できます。

1.1. データファイルの検証

以下のコマンドを実行すると、指定したデータファイルの破損をチェックできます。

RMAN> VALIDATE DATAFILE 1;

すべてのデータファイルを検証する場合は、以下のコマンドを使用します。

RMAN> VALIDATE DATABASE;
RMAN> VALIDATE DATABASE;

validateを25-03-10で開始しています
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=72 デバイス・タイプ=DISK
チャネルORA_DISK_1: データファイルの検証を開始しています
チャネルORA_DISK_1: 検証のためのデータファイルを指定しています
入力データファイル ファイル番号=00001 名前=/u01/app/oracle/oradata/V19/system01. dbf
入力データファイル ファイル番号=00004 名前=/u01/app/oracle/oradata/V19/undotbs01 .dbf
入力データファイル ファイル番号=00003 名前=/u01/app/oracle/oradata/V19/sysaux01. dbf
入力データファイル ファイル番号=00005 名前=/u01/app/oracle/oradata/V19/tbs24.dbf
入力データファイル ファイル番号=00007 名前=/u01/app/oracle/oradata/V19/users01.d bf
チャネルORA_DISK_1: 検証が完了しました。経過時間: 00:00:07
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
1 OK 0 18147 149764 2273920
ファイル名: /u01/app/oracle/oradata/V19/system01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 81289
Index 0 13395
Other 0 36929

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
3 OK 0 18718 88330 2274014
ファイル名: /u01/app/oracle/oradata/V19/sysaux01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 6626
Index 0 2677
Other 0 60299

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4 OK 0 651 92800 2274014
ファイル名: /u01/app/oracle/oradata/V19/undotbs01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 0
Index 0 0
Other 0 92149

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
5 FAILED 0 4609 12800 2273917
ファイル名: /u01/app/oracle/oradata/V19/tbs24.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 7935
Index 0 0
Other 1 256

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
7 OK 0 101 641 1252497
ファイル名: /u01/app/oracle/oradata/V19/users01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 60
Index 0 15
Other 0 464

検証により1つ以上の破損したブロックが見つかりました
詳細はトレース・ファイル/u01/app/oracle/diag/rdbms/v19/v19/trace/v19_ora_2876.tr cを参照してください
チャネルORA_DISK_1: データファイルの検証を開始しています
チャネルORA_DISK_1: 検証のためのデータファイルを指定しています
現行の制御ファイルを検証に組み込んでいます
バックアップ・セットに現行のSPFILEを組み込んでいます
チャネルORA_DISK_1: 検証が完了しました。経過時間: 00:00:01
List of Control File and SPFILE
===============================
File Type Status Blocks Failing Blocks Examined
------------ ------ -------------- ---------------
SPFILE OK 0 2
Control File OK 0 646
validateを25-03-10で終了しました

1.2. バックアップデータの検証

バックアップを取得する前に、データブロックの破損がないかを検証できます。

RMAN> BACKUP VALIDATE DATABASE;

特定の表領域のバックアップの整合性を確認する場合:

RMAN> BACKUP VALIDATE TABLESPACE users;

特定のデータファイルのみを検証する場合:

RMAN> BACKUP VALIDATE DATAFILE 3;

このコマンドでは、実際にバックアップを作成することなく、ブロックの読み取りと検証を行います。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

2. V$DATABASE_BLOCK_CORRUPTIONビュー

VALIDATEコマンドを実行すると、破損したデータブロックの情報がV$DATABASE_BLOCK_CORRUPTIONビューに記録されます。このビューを確認することで、データベース内のどのブロックが破損しているのかを特定できます。

2.1. 破損ブロックの確認

以下のSQL文を実行すると、破損したデータブロックの情報を取得できます。

SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;

このビューには、以下のような情報が格納されます。

COLUMN_NAMEDESCRIPTION
FILE#破損ブロックが含まれるデータファイルの番号
BLOCK#破損ブロックの開始ブロック番号
BLOCKS影響を受けるブロック数
CORRUPTION_TYPE破損の種類(例えば”CORRUPT”, “LOGICAL”, “FRACTURED” など)
SQL> SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;

FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTION_TYPE CON_ID
---------- ---------- ---------- ------------------ --------------------------- ----------
5 140 1 0 ALL ZERO 0

2.2. 破損したデータブロックの修復

破損が発見された場合、適切な対処が必要です。例えば、RMANを使用して破損ブロックを修復することが可能です。

RMAN> RECOVER DATAFILE 1;

また、最新のバックアップからデータを復旧する方法もあります。

RMAN> RESTORE DATAFILE 1;

3. まとめ

  • VALIDATE コマンドは、データベースやデータファイルの破損を事前に検出するために使用される。
  • BACKUP VALIDATE コマンドを使用すると、バックアップの前に破損がないかを確認できる。
  • 破損が検出されると、V$DATABASE_BLOCK_CORRUPTION に記録される。
  • RMANRECOVERRESTORE コマンドを使用して破損ブロックを修復可能。

データの健全性を維持するために、定期的にVALIDATE DATABASEを実行し、データブロックの破損を監視することをおすすめします。

[参考]
Oracle Database バックアップおよびリカバリ・ユーザーズ・ガイド 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました