23 DBVERIFY: オフライン・データベース検査ユーティリティ

DBVERIFYは外部コマンドライン・ユーティリティで、物理データ構造に対する整合性チェックを実行します。

DBVERIFYは、オフラインまたはオンライン・データベースおよびバックアップ・ファイル上で使用できます。DBVERIFYを使用するのは、バックアップ・データベース(またはデータ・ファイル)をリストアする前にそれが有効であることを確認する場合です。また、データ破損の問題が発生した場合に診断機能としても使用します。DBVERIFYはオフライン・データベースに対して実行できるため、整合性チェックが非常に高速に行えます。

DBVERIFYによるチェックは、キャッシュ管理(データ・ブロック)ブロックのみに制限されています。DBVERIFYは、データ・ファイルでのみ使用します。制御ファイルまたはREDOログに対しては機能しません。

DBVERIFYには、2つのコマンドライン・インタフェースがあります。最初のインタフェースでは、確認の対象として単一データ・ファイルのディスク・ブロックを指定します。次のインタフェースでは、確認の対象としてセグメントを指定します。いずれのインタフェースでも、最初にdbvコマンドを記述します。次の項では、これらのインタフェースの記述について説明します。

23.1 DBVERIFYを使用した単一データ・ファイルのディスク・ブロックの検査

このモードでは、DBVERIFYによって、単一データ・ファイルの1つ以上のディスク・ブロックがスキャンされ、ページのチェックが実行されます。

検査するファイルが、Oracle Automatic Storage Management (Oracle ASM)ファイルである場合、USERIDを指定する必要があります。DBVERIFYでOracle ASMファイルにアクセスするには、Oracleインスタンスに接続する必要があるためです。

23.1.1 単一ファイルのブロックを検査する際のDBVERIFY構文

DBVERIFYを使用して単一ファイルのブロックを検証するための構文を参照してください。

単一データ・ファイルのディスク・ブロックを検査するときに使用するDBVERIFYの構文は次のとおりです。

23.1.2 単一ファイルのブロックを検査する際のDBVERIFYパラメータ

単一ファイルのブロックの検証に使用できるDBVERIFYパラメータを参照してください。

パラメータ 説明

USERID

ユーザー名およびパスワードを指定します。

このパラメータは、検査するファイルがOracle ASMファイルである場合にのみ必要です。

このパラメータを指定する場合は、ユーザー名とパスワードの両方を入力する必要があります。入力しない場合、DBV-00112: USERID incorrectly specifiedエラーが返されます。

FILE

検証するデータベース・ファイルの名前。

START

検証する開始ブロック・アドレス。ブロック・アドレスは、Oracleブロックで指定します(オペレーティング・システム・ブロックではありません)。STARTを指定しないと、DBVERIFYはファイル内の最初のブロックにデフォルト設定されます。

END

検証する終了ブロック・アドレス。ENDを指定しないと、DBVERIFYはファイル内の最後のブロックにデフォルト設定されます。

BLOCKSIZE

BLOCKSIZEは、検査するファイルのブロック・サイズが2KBでない場合にのみ指定します。ファイルのブロック・サイズが2KBでない場合、BLOCKSIZEを指定しないとエラーDBV-00103が表示されます。

HIGH_SCN

HIGH_SCNの値が指定されている場合、DBVERIFYは、ブロック・レベルのシステム変更番号(SCN)が指定された値を超えているブロックごとに診断メッセージを書き込みます。

このパラメータは省略可能です。デフォルトはありません。

LOGFILE

ログ情報を書き込むログ・ファイルの名前とパスを指定します。デフォルトでは、端末画面への出力となります。

FEEDBACK

DBVERIFYにより、DBVERIFYの実行中に検証されたページ数nにつき1つのピリオド(.)の形式で、進捗表示が端末に表示されます。n = 0と設定すると、進捗画面は表示されません。

HELP

オンライン・ヘルプを表示します。特定のバージョンのDBVERIFYのコマンドライン・パラメータのヘルプを表示するには、コマンドラインでdbv help=yと入力します。

PARFILE

使用するパラメータ・ファイルの名前を指定します。DBVERIFYパラメータの様々な値をフラット・ファイルに保存できます。これにより、パラメータ・ファイルをカスタマイズして様々なタイプのデータ・ファイルを処理したり、特定のタイプの整合性チェックをデータ・ファイルに対して実行できます。

23.1.3 単一データ・ファイルに対するDBVERIFYの出力例

単一のデータファイルの検証例と、その説明を参照してください。

次に、ファイルt_db1.dbfの検証例を示します。フィードバック・パラメータには値100が指定され、処理された100ページごとに1つのピリオド(.)が表示されます。

% dbv FILE=t_db1.dbf FEEDBACK=100

出力例

このコマンドの出力は次のようになります。


.
.
.
DBVERIFY - Verification starting : FILE = t_db1.f
DBVERIFY - Verification complete

Total Pages Examined : 120424
Total Pages Processed (Data) : 79507
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 15236
Total Pages Failing (Index): 0
Total Pages Processed (Other): 5626
Total Pages Processed (Seg) : 1
Total Pages Failing (Seg) : 0
Total Pages Empty : 20055
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 25565681 (0.25565681)

ノート

  • Pages = ブロック
  • Total Pages Examined =ファイルのブロック数。
  • Total Pages Processed (Data) = 検査されたブロック数(フォーマットされたブロック)。
  • Total Pages Processed (Other) = メタデータ・ブロック。これらのブロックは検証されていないため、Total Pages Failing (Other)の出力はありません。
  • Total Pages Processed (Seg) = セグメント・ヘッダーのブロック数。
  • Total Pages Failing (Data) = データ・ブロック・チェック・ルーチンで違反したブロック数。
  • Total Pages Failing (Index) = 索引ブロック・チェック・ルーチンで違反したブロック数。
  • Total Pages Marked Corrupt = キャッシュ・ヘッダーが無効で、DBVERIFYがブロック・タイプを識別できないブロック数。
  • Total Pages Influx = 読取りおよび書込みが同時に行われるブロック数。DBVERIFYの実行時にデータベースがオープンされている場合は、一貫性を維持したイメージの取得のためにDBVERIFYによってブロックが複数回読み込まれます。ただし、データベースがオープンされているため、読取りおよび書込みが同時に行われるブロックがある可能性があります(INFLUX)。その場合、DBVERIFYでは、絶え間なく変化するページの一貫性のあるイメージは取得できません。
  • Total Pages Encrypted = データまたは索引のみでなく、すべてのブロック(データ、索引、その他、セグメント)。Total Pages Encryptedがゼロ以外の場合は、DBVERIFYが「DBVerifyは暗号化ブロックに対して論理チェックを実行できません。RMANを使用する必要があります。」というメッセージを出力します。

23.2 DBVERIFYを使用したセグメントの検査

このモードでは、DBVERIFYを使用して表セグメントまたは索引セグメントの検査を指定できます。

確認中のセグメントに行連鎖ポインタがあることを確認します。

このモードでは、検査するセグメント(データ・セグメントまたは索引セグメント)を指定する必要があります。また、セグメントについての情報をデータベースから取得するため、SYSDBA権限でデータベースにログインする必要があります。

このモードでは、セグメントはロックされます。1つの索引セグメントを指定する場合、親表はロックされます。IOTなど、一部の索引には親表はありません。

23.2.1 セグメントを検査する際のDBVERIFY構文

DBVERIFYを使用してセグメントを検証するための構文を参照してください。

セグメントを検査するときのDBVERIFYの構文は次のとおりです。

23.2.2 単一のセグメントを検査する際のDBVERIFYパラメータ

単一セグメントの検証に使用できるDBVERIFYパラメータを参照してください。

パラメータ 説明

USERID

ユーザー名およびパスワードを指定します。ユーザー名とパスワードのどちらも入力しない場合、エラーDBV-00112: USERID incorrectly specifiedが返されます。

コンテナ・データベース(CDB)に接続する場合は、username@cdbname/passwordと入力します。

SEGMENT_ID

検証するセグメントを指定します。セグメント識別子は、表領域ID番号(tsn)、セグメント・ヘッダー・ファイル番号(segfile)およびセグメント・ヘッダー・ブロック番号(segblock)で構成されます。この情報はSYS_USER_SEGSから取得できます。関連する列は、TABLESPACE_IDHEADER_FILEおよびHEADER_BLOCKです。SYS_USER_SEGSを問い合せるには、SYSDBA権限が必要です。

たとえば、表領域番号(TS#)が2、セグメント・ヘッダー・ファイル番号(HEADER_FILE)が5、セグメント・ヘッダー・ブロック番号(HEADER_BLOCK)が37767の場合、SEGMENT_ID=2.5.37767を使用してそのセグメントを確認してください。

HIGH_SCN

HIGH_SCNの値が指定されている場合、DBVERIFYは、ブロック・レベルのSCNが指定された値を超えているブロックごとに診断メッセージを書き込みます。

このパラメータは省略可能です。デフォルトはありません。

LOGFILE

ログ情報を書き込むファイルを指定します。デフォルトでは、端末画面への出力となります。

FEEDBACK

DBVERIFYにより、DBVERIFYの実行中に検証されたページ数nにつき1つのピリオド(.)の形式で、進捗表示が端末に表示されます。n = 0と設定すると、進捗画面は表示されません。

HELP

オンライン・ヘルプを表示します。

PARFILE

使用するパラメータ・ファイルの名前を指定します。DBVERIFYパラメータの様々な値をフラット・ファイルに保存できます。これにより、パラメータ・ファイルをカスタマイズして様々なタイプのデータ・ファイルを処理したり、特定のタイプの整合性チェックをデータ・ファイルに対して実行できます。

23.2.3 検査対象のセグメントに対するDBVERIFYの出力例

検査対象のセグメントに対する検証の例を参照してください。

次に、表領域セグメントを指定してDBVERIFYコマンドを使用する例、およびDBVERIFY操作によって生成される出力を示します。

% dbv userid=system/ SEGMENT_ID=2.5.37767

このコマンドの出力は次のようになります。

DBVERIFY - Verification starting : SEGMENT_ID = 2.5.37767

DBVERIFY - Verification complete

Total Pages Examined : 640
Total Pages Processed (Data) : 0 
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0 
Total Pages Failing (Index): 0
Total Pages Processed (Other): 591
Total Pages Processed (Seg) : 8
Total Pages Failing (Seg) : 0
Total Pages Empty : 13
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Total Pages Encrypted : 28 
Highest block SCN : 7877587 (0.7877587)