Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの管理 » データベース管理ユーティリティ

 

検証ユーティリティ (dbvalid)

データベース内のテーブルとマテリアライズド・ビューの一部またはすべてについて、インデックスとキーを検証します。

構文
dbvalid [ options ] [ object-name, ... ]
オプション 説明
@data

指定された環境変数または設定ファイルからオプションを読み込みます。設定ファイルの使用を参照してください。

設定ファイル内のパスワードなどの情報を保護する場合は、ファイル難読化ユーティリティを使用して、設定ファイルの内容を難読化できます。ファイル難読化ユーティリティ (dbfhide)を参照してください。

-c "keyword=value; ..."

データベース接続パラメータを指定します。接続パラメータの説明については、接続パラメータを参照してください。DBA 権限または VALIDATE 権限のあるユーザ ID を使用してください。

たとえば、次のコマンドは、パスワード sql を指定してユーザ DBA として接続し、データベース (c:\salesdata.db のすべてのテーブルとマテリアライズド・ビューを含む) を検証します。

dbvalid -c "UID=DBA;PWD=sql;DBF=c:\salesdata.db"
-d データベース内のすべてのテーブル・ページが正しいオブジェクトに属しているかどうかを検証し、チェックサム検証を実行します。-d オプションを指定した場合、データまたはインデックスは検証されません。-d オプションを -i、-s、または -t オプションと一緒に使用することはできません。
-fx テーブルの各ローを検証し、ローの数がテーブルに関連付けられた各インデックスのローの数と一致することを確認します。このオプションは、各ローに対する個々のインデックスのルックアップは実行しません。このオプションを使用すると、大規模なデータベースの検証を小さなキャッシュで行うときに、パフォーマンスを大幅に向上できます。
-i 指定のインデックスを検証します。
-o filename 指定したファイルに、出力メッセージを書き込みます。
-q 出力メッセージをクライアントに表示しません。ただし、-o オプションを使用してメッセージをファイルに書き込むことは可能です。
-s チェックサムを使用してデータベースを検証します。チェックサムは、データベース・ページがディスク上で変更されたかどうかを判断するために使用します。チェックサム検証では、データベースの各ページをディスクから読み取って、そのチェックサムを計算します。計算されたチェックサムがページに保存されているチェックサムと異なる場合、ディスク上でページが変更されていることを意味し、エラーが返されます。無効なページのページ番号がデータベース・サーバ・メッセージ・ウィンドウに表示されます。-s オプションは、-d、-i、-t、またはいずれの -f オプションとも一緒に使用することはできません。
-t

object-name 値のリスト (テーブルとマテリアライズド・ビューのリストに相当する) を指定します。

object-name

検証するテーブルまたはマテリアライズド・ビューの名前を指定します。

-i を使用した場合、object-name は検証するインデックスを表します。

備考

デフォルトでは、dbvalid はデータベース内のすべてのテーブル、マテリアライズド・ビュー、インデックスを検証し、データベース自体を検証します。

検証ユーティリティを使用すると、データベース内のテーブルとマテリアライズド・ビューの一部またはすべてについて、インデックスとキーを検証できます。検証ユーティリティでは、データベース内のすべてのテーブル・ページが正しいオブジェクトに属し、ページ・チェックサムが正しいことを確認することもできます。デフォルトでは、dbvalid はデータベース内のすべてのテーブルとマテリアライズド・ビューを検証します (-t オプションを指定した場合と同じ動作です)。

検証ユーティリティは、個々のテーブルまたはマテリアライズド・ビューについてオブジェクト全体をスキャンし、テーブルに定義されたインデックスとキーごとにそれぞれのレコードを調べます。検証ユーティリティでは、データベース内のすべてのテーブル・ページが正しいオブジェクトに属し、ページ・チェックサムが正しいことを確認することもできます。検証ユーティリティを実行するためには、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 文を参照してください。