データベース内のテーブルとマテリアライズドビューの一部またはすべてについて、インデックスとキーを検証します。
dbvalid [ options ] [ object-name, ... ]
オプション | 説明 | ||
---|---|---|---|
@data |
指定された環境変数または設定ファイルからオプションを読み込みます。設定ファイルを参照してください。 設定ファイル内のパスワードなどの情報を保護する場合は、ファイル非表示ユーティリティを使用して、設定ファイルの内容を読みにくくすることができます。ファイル非表示ユーティリティ (dbfhide)を参照してください。 |
||
-c "keyword=value; ..." |
データベース接続パラメーターを指定します。 接続パラメーターの詳細については、接続パラメーターを参照してください。 DBA 権限または VALIDATE 権限のあるユーザー ID を使用してください。 たとえば、次のコマンドは、パスワード sql を指定してユーザー DBA として接続し、データベース (c:\salesdata.db のすべてのテーブルとマテリアライズドビューを含む) を検証します。
|
||
-d |
データベース内のすべてのページが正しいオブジェクトに属しているかどうかを検証し、チェックサム検証を実行します。-d オプションはインデックスの正当性を検証します。-d オプションを -i、-s、または -t オプションと一緒に使用することはできません。 VALIDATE 文を参照してください。 |
||
-fx | プライマリキー/外部キー参照整合性チェックを無効にします。 | ||
-i | object-name をインデックスのリストとして定義します。 | ||
-o filename | 指定したファイルに、出力メッセージを書き込みます。 | ||
-q | 出力メッセージをクライアントに表示しません。ただし、-o オプションを使用してメッセージをファイルに書き込むことは可能です。 | ||
-s | チェックサムを使用してデータベースを検証します。チェックサムは、データベースページがディスク上で変更されたかどうかを判断するために使用します。チェックサム検証では、データベースの各ページをディスクから読み取り、チェックサムが存在すればそのチェックサムを計算します。計算されたチェックサムがページに保存されているチェックサムと異なる場合、ディスク上でページが変更されていることを意味し、エラーが返されます。無効なページのページ番号がデータベースサーバーメッセージウィンドウに表示されます。-s オプションは、-d、-i、-t、または -fx オプションと一緒に使用することはできません。 | ||
-t |
object-name をテーブルとマテリアライズドビューのリストとして定義します。 |
||
object-name |
検証するテーブルまたはマテリアライズドビューの名前を指定します。 -i を使用した場合、object-name は検証するインデックスを表します。 |
検証ユーティリティを使用すると、データベース内のテーブルとマテリアライズドビューの一部またはすべてについて、インデックスとキーを検証できます。検証ユーティリティでは、データベース内のすべてのページが正しいオブジェクトに属し、ページチェックサムが正しいことを確認するデータベースファイル構造を検証できます。デフォルトでは、dbvalid はデータベース内のすべてのテーブル、マテリアライズドビュー、インデックスを検証し、データベースファイル構造を検証します。
テーブルを検証するときに、dbvalid はすべてのテーブルのインデックスも検証して、テーブル内の一連のローと値が各インデックスに含まれる一連のローと値に一致するかどうかを確認します。テーブル内のすべての BLOB もトラバースされ、BLOB アロケーションマップが検証されて、孤立した BLOB が検出されます。また、検証ユーティリティは、すべてのインデックスページの物理構造、インデックスハッシュ値の順序、インデックスの一意性要件 (指定されている場合) も検査します。-fx オプションが指定されない場合、各外部キー値は、参照整合性制約がそのまま残っているかどうかについて、対応するプライマリキーテーブルで検索されます。
-i オプションが指定されたときには、dbvalid は object-list 内の各インデックスを検証します。インデックスの検証は、テーブルの検証とまったく同じように処理されますが、指定されたインデックスとその下にあるテーブルが検証されることだけが異なります。インデックスが外部キーの場合は、-fx オプションが指定されない限り、それぞれの値がプライマリキーテーブルで検索されます。
データベースクリーナーが実行している間にデータベースの検証を開始すると、データベースクリーナーの実行が終了するまで検証は実行されません。sa_clean_database システムプロシージャーを参照してください。
検証ユーティリティを実行するためには、DBA 権限または VALIDATE 権限が必要です。
次の方法で、検証ユーティリティにアクセスすることもできます。
Sybase Central のデータベース検証ウィザードを使用する。データベースの検証を参照してください。
Interactive SQL から VALIDATE 文を使用する。VALIDATE 文を参照してください。
検証ユーティリティを通常のバックアップと一緒に使用すると、データベースのデータの整合性を保持できます。データベースのバックアップコピーを検証する場合は、バックアップのコピーを作成し、そのコピーを検証することをおすすめします。そうすることで、リカバリに使用されるファイルが変更されないようにすることができます。バックアップとデータリカバリを参照してください。
データベースとトランザクションログのバックアップコピーには、どのような変更でも加えるべきではありません。バックアップ中に処理中のトランザクションがなかった場合、または BACKUP DATABASE WITH CHECKPOINT LOG RECOVER か WITH CHECKPOINT LOG NO COPY を指定した場合は、読み込み専用モードを使用するか、バックアップデータベースのコピーを検証して、バックアップデータベースの妥当性をチェックできます。
一方、トランザクションの処理中だった場合、または BACKUP DATABASE WITH CHECKPOINT LOG COPY を指定した場合は、検証の開始時にデータベースサーバーがデータベースのリカバリを実行する必要が生じます。リカバリを実行するとバックアップコピーに変更が加えられるため、元のデータベースからの以降のトランザクショログファイルが適用されなくなります。
検証ユーティリティの実行によってデータベースを自動的に起動する場合、データベースは読み込み専用モードで起動されます。この処理が、バックアップまたはリカバリのプランの一環として検証を行う場合に、データベースに変更が加えられることを防いでいます。
検証ユーティリティが、読み込み専用モードで起動していない実行中のデータベースに接続すると、警告が表示されます。この警告は、検証しようとしているデータベースを、リカバリプランの中で使用できないことを知らせるものです。バックアップの実行によって、dbbackup で作成したほとんどのデータベースには、リカバリが必要であることを示すマークが付けられます。検証対象のデータベースがリカバリを必要としており、そのデータベースを読み込み/書き込みモードで起動したい場合は、dbvalid の実行前にデータベースを起動するか、DBS 接続パラメーターに有効な値を指定してください。DatabaseSwitches (DBS) 接続パラメーターを参照してください。
次のコマンドはどちらも、mycopy.db データベースのリカバリが必要な場合に dbvalid を実行できるようにします。
dbvalid -c "UID=DBA;PWD=sql;DBF=mycopy.db;DBS=-n mycopy" |
dbvalid -c "UID=DBA;PWD=sql;DBF=mycopy.db;DBS=-dh" |
テーブルまたはデータベース全体の検証は、データベースに変更を加えている接続がない場合に実行してください。そうしないと、実際に破損していなくても、何らかの形でデータベースが破損したことを示すエラーがレポートされます。
検証ユーティリティは、グローバルチェックサムが有効になっていないデータベースで、チェックサム違反に関する警告を返すことがあります。これは、データベースサーバーが、チェックサムが有効かどうかに関係なく、重要なデータベースページのチェックサムを自動的に計算するからです。データベースの一部のページにチェックサムが存在する場合もあります。これは、データベースが書き込みチェックサムを有効にして起動されたためです。
また、データベースサーバーは、Windows Mobile 上で実行されているデータベースや、信頼性の低いストレージメディア (リムーバブルドライブなど) 上で実行されているデータベースに対しても、自動的にチェックサムを作成します。チェックサムを使用した破損の検出を参照してください。
検証は、検証対象のテーブルに対する排他アクセスを取得せず、検証中にデータベースが変更された場合には、失敗をレポートします。このことを考慮すれば、データベース上に他のアクティビティがない場合に、データベースの検証を行うのが最適です。
終了コードは、0 (成功) または 0 以外の値 (失敗) です。
検証中に行われる個々のチェックの詳細については、VALIDATE 文を参照してください。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |