RMU Verifyコマンドを修飾子なしで指定すると、データベース・ルート・ファイルの確認と、デフォルトRDB$SYSTEM記憶領域の領域インベントリ・ページ(AIP)と領域ビットマップ(ABM)ページの全体ページ確認が実行されます。 また、スナップショット・ファイルとアフター・イメージ・ジャーナル(ジャーナル処理が無効の場合も)が検証されます。
RMU Verifyコマンドは、領域管理(SPAM)ページの形式が適切かどうかをチェックします。個々のデータ・ページが確認されるときに個々のエントリの内容も確認されます。このコマンドでは、行のデータが適切かどうかは判別されません。
RMU Verifyコマンドは、データベースのデータ構造の内部整合性をチェックします。深刻なシステム障害が発生した後ではデータベースを確認することを強くお薦めします。バックアップ操作を実行する前などに、定期メンテナンスの一環としてデータベースを確認する必要もあります。様々な修飾子を使用して、限られた時間内に最大限のデータベース領域の確認を実行できます。
注意
RMU ConvertコマンドをNocommit修飾子と一緒に使用してOracle Rdbリリース6.1よりも前に作成されたデータベースを変換した後で、RMU ConvertコマンドとRollback修飾子を一緒に使用して以前のデータベース構造レベルに戻すと、その後の確認操作によってRMU-W-PAGTADINV警告メッセージが返されることがあります。詳細は、「使用上の注意」の項を参照してください。
root-file-spec
確認するOracle Rdbデータベース。デフォルトのファイル拡張子は.rdbです。
All
All修飾子を指定すると、外部ルーチンを含めてデータベース全体がチェックされます。All修飾子の指定は、次のコマンドに示す修飾子のリストの発行と同じです。
$ RMU/VERIFY/ROOT/CONSTRAINTS/INDEXES/DATA/AREAS - _$ /SNAPSHOTS/LAREAS/ROUTINES MF_PERSONNEL.RDB
All修飾子を指定しない場合、指定する他の修飾子によってリクエストされる確認が実行されます。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Areas[=storage-area-list]
確認するデータベースの記憶領域を指定します。記憶領域は名前または領域のID番号で指定できます。記憶領域を名前で指定するとき、各記憶領域名は、記憶領域ファイル名ではなく、記憶領域のSQL CREATE STORAGE AREA文で定義されている名前であることが必要です。複数の記憶領域を指定する場合は、記憶領域名またはID番号をカンマで区切り、記憶領域のリストをカッコで囲みます。引数なしのAreas修飾子(またはAreas=*)は、Oracle RMUがデータベースのすべての記憶領域を確認するように指示します。シングル・ファイル・データベースでは、記憶領域名を指定しないとRDB$SYSTEM記憶領域が確認されます。1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Areas修飾子には間接ファイル参照を使用できます。詳細は、第1.3節を参照してください。
Areas修飾子を指定しないと、Oracle RMUは記憶領域を確認しません。
Checksum_Only
Areas修飾子と一緒に指定して、ページのチェックサム確認のみを実行します。これによって、データベース・ページに実行される確認のレベルが低くなります。RMU VerifyコマンドにChecksum_Only修飾子を付けると、付けない場合よりも高速で実行されますが、ページの完全な確認は行われません。この修飾子を使用すると、確認の速度と確認レベルのトレードオフが可能になります。このようなトレードオフの詳細は、『Oracle Rdb Guide to Database Maintenance』を参照してください。このコマンドによって特定のページの問題が検出された場合、Indexes、AreasまたはLareasといった他の修飾子を使用して、そのページを詳しく確認することができます。
Checksum修飾子をRMU Backupコマンドに指定すると、バックアップ操作時にも同じレベルの確認を実行できることに注意してください。Checksum修飾子をRMU Backupコマンドに指定する利点は、チェックサム操作をバックアップ操作と同時に実行できることです。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
デフォルトはページの完全確認です。
Constraints[=(Options)]
Noconstraints
データベースのデータの整合性をチェックするためにOracle RMUがロードして実行する制約を指定します。また、制約によって参照される外部ルーチン(プロシージャおよびファンクション)がアクティブ化され、実行されます。例外が生成されると、確認操作が障害を報告します。ルーチンのアクティブ化および実行方法の詳細は、Routines修飾子の説明を参照してください。オプションは次のとおりです。
- Tables=(list)
制約をチェックする表を指定します。複数の表を指定する場合は、各表名をカンマで区切り、リストをカッコで囲みます。表リストのかわりにワイルド・カード文字、アスタリスク(*)を指定して、データベースのすべての表で制約をチェックするように指定できます。このオプションは、RMU LoadコマンドをNoconstraints修飾子と一緒に発行するときに役立ちます。- Constraints=(list)
Oracle RMUでロードして実行する制約を指定します。複数の制約を指定する場合は、各制約名をカンマで区切り、リストをカッコで囲みます。制約リストのかわりにワイルド・カード文字、アスタリスク(*)を指定して、データベースですべての制約をチェックするように指定できます。- (Tables=(list), Constraints=(list))
TablesオプションとConstraintsオプションの両方を指定して、Oracle RMUで確認する表と制約の組合せを指定します。Tablesオプションでワイルド・カード文字(アスタリスク(*))を指定し、同じOracle RMUコマンドラインのConstraintオプションに1つまたは複数の制約を指定した場合、Oracle RMUはすべての制約を確認します。
制約の確認の詳細は、『Oracle Rdb Guide to Database Maintenance』を参照してください。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
デフォルトはNoconstraints修飾子です。Noconstraints修飾子を指定すると、Oracle RMUは制約を確認しません。
Data
Nodata
索引と表の間で一貫性チェックを行うかどうかを指定します。Data修飾子を指定すると、Oracle RMUは、索引がポイントするすべての行が表の有効な行であることと、表のすべての行が表に定義されているすべての索引からポイントされていることをチェックします。このような比較の実行方法の詳細は、Indexes修飾子の説明を参照してください。Data修飾子が有効なのは、Indexes修飾子と一緒に使用する場合のみです。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
デフォルトはData修飾子です。
End=page-number
確認する最後のページを指定します。この修飾子は、AreasおよびLareas修飾子と一緒に使用します。End修飾子を使用しないと、Oracle RMUは、記憶領域の最初のページ(またはStart修飾子で指定したページ)から最後のページまですべてのページを確認します。End修飾子が有効なのは、AreasまたはLareas修飾子を指定する場合のみです。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Functions
Nofunctions
この修飾子はRoutines修飾子と同じです。Routines修飾子の説明を参照してください。Incremental
最後の全体確認または増分確認の後で変更されたデータベース・ページを確認するようにOracle RMUに指示します。Oracle RMUは、データベース・ルート・ファイルに全体確認と増分確認両方のタイムスタンプを格納します。最後の確認操作の後で変更されたページを判別するために、Oracle RMUはこれらのタイムスタンプとページのタイムスタンプを比較します。ページのタイムスタンプはページが更新されると必ず更新されます。増分確認では全体確認と同数のI/O操作が実行されますが、増分確認は全体確認に比べて使用するCPUサイクルが少ないため、全体確認よりも頻繁に実行することができます。デフォルトは全体確認の実行です。
注意
Incremental修飾子をRMU Verifyコマンドで使用する場合は、All修飾子のみと使用し、他の修飾子とは一緒に使用しないことをお薦めします。データベース・ルート・ファイルのタイムスタンプは、All修飾子が指定されている場合のみ、全体確認と増分確認の際に更新されます。このため、All修飾子を指定しないと、データベースの同じ記憶領域の増分確認を2回続けて行うと同じ確認が実行されます。つまり、2回目の増分確認では、1回目の増分確認で確認されたページを無視するはずですが、そのようになりません。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Incremental修飾子を指定しない場合は、タイムスタンプに関係なく、リクエストしたすべてのページが確認されます。
Indexes[=index-list]
IndexesまたはIndexes=*修飾子を指定すると、データベースのすべての索引(無効な索引以外)の整合性を確認します。索引リストを指定すると、特定の索引または複数の索引の整合性を確認します。複数の索引を指定する場合は、索引名をカンマで区切り、索引リストをカッコで囲みます。Oracle Rdbリリース7.0からOracle RMUは索引を確認するために新しい方法を使用しています。以前のバージョンの確認操作では、索引がポイントする表の行を取得しようとしていました。Oracle Rdbリリース7.0以降では、確認操作によって、表のすべてのdbkeyのソート・リストと、索引のすべてのdbkeyのソート・リストが作成されます。確認操作でこれら2つのリストを比較することで、データ行のエントリのない索引を検出できます。また、確認操作の実行が速くなります。dbkeyのこのような比較は確認操作の終了時に行われます。Log修飾子を指定すると、比較が行われていることを示す次のようなメッセージが表示されます。
%RMU-I-IDXVERSTR, Index data verification of logical area 60 (DEGREES) started. %RMU-I-IDXVEREND, Index data verification of logical area 60 finished.
さらに、Oracle Rdbリリース7.0以降では、Data修飾子(デフォルト)を使用して索引を確認するとき、Oracle RMUは索引によって参照される論理領域も確認します。「例」の項の「例5」を参照してください。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
デフォルトではOracle RMUは索引を確認しません。
Indexes修飾子は間接ファイル参照と一緒に使用できます。詳細は、第1.3節を参照してください。
Lareas[=logical-area-list]
確認したい論理領域(1つまたは複数)に割り当てられている記憶領域ページを指定します。複数の論理領域を指定する場合は、論理領域名をカンマで区切り、論理領域リストをカッコで囲みます。引数なしのLareas修飾子(またはLareas=*)は、Oracle RMUがデータベースのすべての論理領域を確認するように指示します。論理領域が確認されるとき、領域の各ページが最初のページから順に読み取られて確認されます。索引名をLareas修飾子に指定すると、索引が確認されますが、論理領域としては確認されません。この場合、最初の索引レコードがフェッチされ(すべてのページで行われる)、索引の構造に従って確認が行われます。(たとえば、索引レコードが他の索引レコードをポイントする場合は、それらのレコードがフェッチされて確認されます。索引ノードがリーフ・ノードである場合は、データ・レコードがフェッチされて確認されます。これらのデータ・ページは別の論理領域に存在していてもかまいません。)
この修飾子を使用して、1つ以上の表を確認します。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Lareas修飾子は間接ファイル参照と一緒に使用できます。詳細は、第1.3節を参照してください。
デフォルトではOracle RMUは論理領域を確認しません。
Log
Nolog
コマンドの処理をSYS$OUTPUTに報告するかどうかを指定します。デフォルトでは、SYS$OUTPUTはコマンドを発行するユーザーの端末です。Log修飾子を指定すると、各確認操作をSYS$OUTPUTに表示するようにリクエストします。Nolog修飾子を指定すると、この表示が行われません。どちらも指定しない場合は、DCL確認スイッチの現在の設定がデフォルトになります。(DCL SET VERIFYコマンドによってDCL確認スイッチが制御されます。)Log修飾子を指定すると、Oracle RMUによって、指定した各データベース領域の確認にかかった時間と、確認操作全体にかかった時間が表示されます。Log修飾子による表示は、確認操作がどの程度完了したかを示すときにも役立ちます。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Output=file-spec
出力の送信先ファイル名を指定します。デフォルトはSYS$OUTPUTです。ファイル名を指定すると、デフォルトの出力ファイル・タイプは.lisになります。Log修飾子とOutput修飾子を両方指定すると、Log修飾子によって生成されるメッセージとすべてのエラー・メッセージが出力ファイル指定に送られます。Output修飾子のみを指定すると、エラー・メッセージのみが出力ファイルに取得されます。1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Root
Noroot
複数ファイル・データベースで、データベース・ルート(.rdb)ファイルのフィールドとデータベース(.rda、.snp、.aij)ファイルへのすべてのポインタのみを確認することを指定します。スナップショット(.snp)ファイルは検証されます。つまり、最初のページがチェックされ、ファイルが.snpファイルであることと、確認対象のデータベースに属していることが調べられます。アフター・イメージ・ジャーナルが有効な場合は、.aijファイルも検証されます。Root修飾子を指定すると、AIPおよびABMページが確認されます。Noroot修飾子を指定して、他の修飾子を指定しないと、AIPページのみが確認されます。Noroot修飾子を指定して、AreasまたはLareas修飾子を指定すると、記憶領域または論理領域の他のページが確認されるときにABMおよびSPAMページが確認されます。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Root修飾子はシングル・ファイル・データベースにも指定できます。
デフォルトはRoot修飾子です。
Routines
Noroutines
Routines修飾子は、データベースに格納されるすべてのルーチン(ファンクションおよびプロシージャ)定義の整合性を確認します。Oracle RMUは、各外部ルーチンを一度に1つずつアクティブ化してからアクティブ化解除し、確認を実行します。例外が生成されると、確認操作が障害を報告します。Routines修飾子は、共有可能イメージが想定される場所にあること、アクセス可能なこと、正しいエントリ・ポイントがこの場所にあることを確認します。想定される場所は、SQL CREATE FUNCTIONまたはCREATE PROCEDURE文で指定された場所です。共有可能イメージが想定される場所にないかアクセスできない、またはエントリ・ポイントが想定される場所にない場合は、エラー・メッセージを受け取ります。
Oracle RMUをSYSPRVでインストールした場合、クライアント側のバインディングに登録されるルーチンの外部ルーチン・イメージが次の基準を満たす必要があります。満たさない場合、RMU Verifyコマンドはイメージ内のルーチンのエントリ・ポイントの存在をチェックできません。
- インストールされていること。
- DCL /SYSTEMおよび/EXECUTIVE修飾子で定義された論理のみを使用するイメージ・ファイル指定で指定されていること。
さらに、RMU Verifyコマンドを発行するユーザーは、ルーチンをアクティブ化するためにOpenVMS SYSPRVが必要です。
Noroutines修飾子は、ルーチン・インタフェースを確認しないことを指定します。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
デフォルトではOracle RMUはルーチンを確認しません。
Segmented_Strings
Nosegmented_Strings
データベースの3タイプの記憶領域すべて、すなわち読取り/書込み記憶領域および読取り専用記憶領域(読取り/書込みディスク・デバイス)、ライトワンス記憶領域(WORMオプティカル・ディスク・デバイス)において、各表の各列のすべてのリスト(セグメント文字列)データを確認します。RMU VerifyコマンドにAll修飾子を指定すると、データベースのすべての表のすべてのリスト・データ(セグメント文字列)が確認されます。Segmented_Strings修飾子を一緒に使用できるのはLareas修飾子のみです。この修飾子と一緒に使用すると次のように確認が行われます。
- Lareas=*およびSegmented_Strings修飾子を付けたRMU Verifyコマンド。
すべての表のセグメント文字列が確認されます。- Lareas=(LAREA_1,...,LAREA_N)およびSegmented_Strings修飾子を付けたRMU Verifyコマンド。
表LAREA_1〜LAREA_Nのセグメント文字列が確認されます。
Segmented_Strings修飾子を省略すると、リスト・データの確認は行われません。
Segmented_Strings修飾子を指定すると、データベースの各行の各列のすべてのリスト・データが確認されます。確認操作では、すべてのポインタ・セグメントと、ポインタ・セグメントのすべてのデータ・セグメントのフェッチが試行されます。また、セグメントの合計長、ポインタ・セグメント数、データ・セグメント数、リスト・データの最長セグメントの長さなど、すべてのヘッダー情報が確認されます。
Snapshots
指定した記憶領域のスナップショット領域をページ・ヘッダー・レベルまで確認します。Snapshots修飾子は、スナップショット・ページのチェックサム確認のみを実行します。Snapshots修飾子が有効なのは、Areas修飾子も指定する場合のみです。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Snapshots修飾子は間接ファイル参照と一緒に使用できます。詳細は、第1.3節を参照してください。
デフォルトではOracle RMUはスナップショットを確認しません。
Start=page-number
確認する最初のページを指定します。この修飾子は、AreasおよびLareas修飾子と一緒に使用します。Start修飾子を使用しない場合、確認は記憶領域の最初のページから開始します。Start修飾子が有効なのは、AreasまたはLareas修飾子も指定する場合のみです。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
Transaction_Type=option
確認対象の記憶領域の検索ロックを設定します。次のいずれかのキーワードを使用してトランザクション・モードを制御します。
- Automatic
Transaction_Type=Automaticを指定すると、トランザクション・タイプは、現在のデータベースの設定(スナップショットの有効、遅延または無効、このユーザーで使用可能なトランザクション・モード、データベースのスタンバイ・ステータス)によって変わります。- Read_Only
Read_Onlyトランザクションを開始します。- Exclusive
Read_Writeトランザクションを開始し、Exclusive_Readのために表を予約します。- Protected
Read_Writeトランザクションを開始し、Protected_Readのために表を予約します。Protectedモードがデフォルトです。- Shared
Read_Writeトランザクションを開始し、Shared_Readのために表を予約します。
キーワードIsolation_Level=[option]に次のいずれかのオプションを使用して、トランザクションの分離レベルを指定します。
- Read_Committed
- Repeatable_Read
- Serializable。Serializableはデフォルト設定です。
トランザクション分離レベルの詳細は、『Oracle Rdb SQLリファレンス・マニュアル』のSET TRANSACTION文の説明を参照してください。
次のいずれかのキーワードを使用して待機設定を指定します。
- Wait
ロックされたリソースが使用可能になるまで永続的に待機します。Waitはデフォルトの動作です。- Wait=n
nに指定する値は、トランザクション・ロック・タイムアウト間隔です。この値を指定すると、Oracle Rdbはn秒間待機した後で、待機とRMU Verifyセッションを強制終了します。待機タイムアウト間隔を0に指定すると、Nowaitの指定と同じになります。- Nowait
ロックされたリソースが使用可能になるのを待機しません。
1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。
- データベースに対してRMU Verifyコマンドを使用するには、そのデータベースのルート・ファイルのアクセス制御リスト(ACL)にRMU$VERIFY権限が必要です。あるいは、OpenVMS SYSPRVまたはBYPASS権限が必要です。SQL DBADM権限も必要です。
- 1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決定するルールを次に示します。
- Incremental、Log、OutputおよびTransaction_Type修飾子は、1つのRMU Verifyコマンドラインで他のどの修飾子とも組み合せて使用できます。
- All修飾子を指定した場合に同じコマンドラインに指定できるのは、次の修飾子だけです。
- Noroutines(またはNofunctions)
- Nosegmented_Strings
- All修飾子を指定しない場合は、次の修飾子の任意の組合せを1つのコマンドラインに指定できます。
- Areas
- Constraints
- [No]Functions
- Indexes
- Lareas
- [No]Root
- [No]Routines
- Checksum_OnlyまたはSnapshots修飾子を指定するには、Areas修飾子を指定する必要があります。
- Segmented_Strings修飾子を指定するには、Lareas修飾子を指定する必要があります。
- StartおよびEnd修飾子を指定するには、AreasまたはLareas修飾子を指定する必要があります。
- Indexes修飾子は、StartおよびEnd修飾子と同じRMU Verifyコマンドラインには指定できません。
- [No]Data修飾子を指定するには、Indexes修飾子を指定する必要があります。
- 『Oracle Rdb Guide to Database Maintenance』で説明されている確認の戦略を採用すると、データベースのRMU Verifyのパフォーマンスを大幅に向上できます。また、このコマンドの最適なパフォーマンスを得るには、検出済非同期プリフェッチの検出を有効にする必要があります。Oracle Rdbリリース7.0以上では、検出済非同期プリフェッチがデフォルトで有効になっています。データベースの設定を確認するには、Header修飾子を付けてRMU Dumpコマンドを発行します。
検出済非同期プリフェッチが無効になっており、データベースに対して有効にしたくない場合は、次の論理をプロセス・レベルで定義すると、Oracle RMU操作に対して検出済非同期プリフェッチ有効化することができます。
$ DEFINE RDM$BIND_DAPF_ENABLED 1 $ DEFINE RDM$BIND_DAPF_DEPTH_BUF_CNT P1
P1は、ユーザー・バッファ・カウントの10〜20パーセントの値です。- RMU ConvertコマンドをNocommit修飾子と一緒に使用してOracle Rdbリリース6.0よりも前に作成されたデータベースを変換した後で、RMU ConvertコマンドとRollback修飾子を一緒に使用して以前のデータベース構造レベルに戻すと、その後のRMU Verifyコマンドによって次のようなメッセージが生成されることがあります。
%RMU-W-PAGTADINV, area RDB$SYSTEM, page 1 contains incorrect time stamp expected between 14-APR-1992 15:55:25.74 and 24-SEP-1993 13:26:06.41, found:
Oracle Rdbリリース6.0以降では、高速増分バックアップ機能によって、更新済SPAMページのページ・ヘッダーが変更され、前の全体バックアップ操作以降に更新されたページ範囲が記録されます。リリース6.0よりも前のOracle RdbのRMU Verifyコマンドには、更新済ページ・ヘッダーを認識するコードは含まれていません。更新済SPAMページ・ヘッダーを検出すると、PAGTADINV警告を発行します。更新済ページ・ヘッダーはRMU Verifyコマンドでしか検出されません。また、Oracle Rdbの実行時の操作には影響しません。更新済SPAMページを修正するには、次のようにSpams修飾子を付けたRMU Repairコマンドを使用できます。
$ RMU/VERIFY/ALL/NOLOG MF_PERSONNEL %RMU-W-PAGTADINV, area RDB$SYSTEM, page 1 contains incorrect time stamp expected between 14-APR-1992 15:55:25.74 and 24-SEP-1993 13:26:06.41, found: $ $ RMU/REPAIR/SPAMS MF_PERSONNEL %RMU-I-FULBACREQ, A full backup of this database should be performed after RMU/REPAIR $ $ RMU/VERIFY/ALL/NOLOG MF_PERSONNEL $
- RMU Verifyコマンドは、RMU VerifyコマンドのConstraints=(Constraints=list)修飾子に制約名を指定しないかぎり、(SQL ALTER TABLE enable-disable句によって)無効になっている制約を無視します。Constraints修飾子をリストなしで指定すると、無効になった制約は無視されます。
Constraints=(Constraints=list)修飾子に無効な制約の名前を指定することで、定期的に制約をチェックできます(制約を再び有効にする必要はありません)。この機能を使用して、頻繁なチェックを必要としないビジネス・ルールをデータベースに用意することができます。業務時間内に制約をチェックするオーバーヘッドのコストがかかりすぎる場合、またはアプリケーションによってすでに制約が施行されている場合に、この方法を実施すると役立ちます。- RMU Verifyコマンドで使用される作業ファイルの数は、RDMS$BIND_SORT_WORKFILES論理名で制御されます。許可される値は1〜10、デフォルト値は2です。これらの作業ファイルの場所は、SORTWORKn論理名(nは0〜9の数)を使用してデバイス指定に指定できます。SORT/MERGEの使用方法の詳細は、OpenVMSのドキュメント・セットを参照してください。Oracle Rdb論理名の使用方法の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
Index修飾子を指定すると、RMU Verifyコマンドでは2つの個別ソート・ストリームが内部で使用されるため、指定する作業ファイルの数が各ストリームで使用されます。たとえば、RDM$BIND_SORT_WORKFILESを10に定義すると、20個の作業ファイルが作成されます。
例1次のコマンドは、All修飾子が指定されているためmf_personnelデータベース全体を確認します。
$ RMU/VERIFY/ALL/LOG MF_PERSONNEL.RDB
例2
次のコマンドは、mf_personnelデータベースの記憶領域EMPIDS_LOW、EMPIDS_MIDおよびEMPIDS_OVERを確認します。
$ RMU/VERIFY/AREAS=(EMPIDS_LOW,EMPIDS_MID,EMPIDS_OVER)/LOG - _$ MF_PERSONNEL.RDB
例3
次のコマンドは、large_databaseというデータベースのすべての記憶領域でチェックサム確認のみを実行します。Checksum_Only修飾子を使用すると、データベースに含まれる明らかなチェックサムの問題がすぐに検出されます。チェックサムの問題がページで検出された場合は、RMU Dumpコマンドを使用してページをダンプし、該当する論理領域と索引を確認します。
$ RMU/VERIFY/AREAS=*/CHECKSUM_ONLY/LOG LARGE_DATABASE
例4
次のコマンドは、CandidatesおよびColleges表を確認します。
$ RMU/VERIFY/LAREAS=(CANDIDATES,COLLEGES)/LOG MF_PERSONNEL.RDB
例5
次の例は、Oracle Rdbリリース7.0以降でOracle RMUが採用している索引確認方法の動作を示します。最初のRMU Verifyコマンドはログ出力を示します。このコマンドはOracle Rdbリリース6.1で発行されています。次のRMU Verifyコマンドはログ出力を示します。このコマンドはOracle Rdbリリース7.0で発行されています。
$ @SYS$LIBRARY:RDB$SETVER 6.1 $ SET DEF DB1:[V61] $ RMU/VERIFY/INDEXES=EMP_EMPLOYEE_ID/DATA MF_PERSONNEL.RDB/LOG %RMU-I-BGNROOVER, beginning root verification %RMU-I-ENDROOVER, completed root verification %RMU-I-DBBOUND, bound to database "DB1:[V61]MF_PERSONNEL.RDB;1" %RMU-I-OPENAREA, opened storage area RDB$SYSTEM for protected retrieval %RMU-I-BGNAIPVER, beginning AIP pages verification %RMU-I-ENDAIPVER, completed AIP pages verification %RMU-I-BGNABMSPM, beginning ABM pages verification %RMU-I-OPENAREA, opened storage area MF_PERS_SEGSTR for protected retrieval %RMU-I-ENDABMSPM, completed ABM pages verification %RMU-I-BGNNDXVER, beginning verification of index EMP_EMPLOYEE_ID %RMU-I-OPENAREA, opened storage area EMPIDS_LOW for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_MID for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_OVER for protected retrieval %RMU-I-ENDNDXVER, completed verification of index EMP_EMPLOYEE_ID %RMU-I-CLOSAREAS, releasing protected retrieval lock on all storage areas %RMU-S-ENDVERIFY, elapsed time for verification : 0 00:00:09.14 $ @SYS$LIBRARY:RDB$SETVER 7.0 $ SET DEF DB1:[V70] $ RMU/VERIFY/INDEXES=EMP_EMPLOYEE_ID/DATA MF_PERSONNEL.RDB/LOG %RMU-I-BGNROOVER, beginning root verification %RMU-I-ENDROOVER, completed root verification %RMU-I-DBBOUND, bound to database "DB1:[V70]MF_PERSONNEL.RDB;1" %RMU-I-OPENAREA, opened storage area RDB$SYSTEM for protected retrieval %RMU-I-BGNAIPVER, beginning AIP pages verification %RMU-I-ENDAIPVER, completed AIP pages verification %RMU-I-BGNABMSPM, beginning ABM pages verification %RMU-I-ENDABMSPM, completed ABM pages verification %RMU-I-BGNNDXVER, beginning verification of index EMP_EMPLOYEE_ID %RMU-I-OPENAREA, opened storage area EMPIDS_LOW for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_MID for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_OVER for protected retrieval %RMU-I-ENDNDXVER, completed verification of index EMP_EMPLOYEE_ID %RMU-I-BSGPGLARE, beginning verification of EMPLOYEES logical area as part of EMPIDS_LOW storage area %RMU-I-ESGPGLARE, completed verification of EMPLOYEES logical area as part of EMPIDS_LOW storage area %RMU-I-BSGPGLARE, beginning verification of EMPLOYEES logical area as part of EMPIDS_MID storage area %RMU-I-ESGPGLARE, completed verification of EMPLOYEES logical area as part of EMPIDS_MID storage area %RMU-I-BSGPGLARE, beginning verification of EMPLOYEES logical area as part of EMPIDS_OVER storage area %RMU-I-ESGPGLARE, completed verification of EMPLOYEES logical area as part of EMPIDS_OVER storage area %RMU-I-IDXVERSTR, Beginning index data verification of logical area 69 (EMPLOYEES). %RMU-I-IDXVEREND, Completed data verification of logical area 69. %RMU-I-IDXVERSTR, Beginning index data verification of logical area 70 (EMPLOYEES). %RMU-I-IDXVEREND, Completed data verification of logical area 70. %RMU-I-IDXVERSTR, Beginning index data verification of logical area 71 (EMPLOYEES). %RMU-I-IDXVEREND, Completed data verification of logical area 71. %RMU-I-CLOSAREAS, releasing protected retrieval lock on all storage areas %RMU-S-ENDVERIFY, elapsed time for verification : 0 00:00:11.36
例6
次の例は、データを表にロードし、表を確認し、制約に違反するロード済行を識別します。
Noconstraints修飾子がRMU Loadコマンドに指定されているため、データベースの整合性に違反するデータがデータベースに追加されることがあります。2番目のRMU Verifyコマンドは、ロード直後の表を確認し、表の制約に違反するデータが実際にロードされたことを明らかにします。
SQLコマンドを発行して制約に違反する行を判別します。これで、違反した行をデータベースから削除するかEMPLOYEES表に追加して、データベースの整合性をリストアすることができます。最後のRMU Verifyコマンドは、再び制約をチェックし、変更によりデータベースの整合性がリストアされたことを確認します。
$ ! $ ! Load data into the JOB_HISTORY table of the mf_personnel database. $ ! Specify the Noconstraints qualifier: $ ! $ RMU/LOAD/RECORD_DEFINITION=(FILE=JOB_HIST.RRD, FORMAT=TEXT) - _$ MF_PERSONNEL.RDB JOB_HISTORY JOB_HIST.UNL/NOCONSTRAINTS %RMU-I-DATRECREAD, 18 data records read from input file. %RMU-I-DATRECSTO, 18 data records stored. $ ! $ ! Verify the JOB_HISTORY table: $ ! $ RMU/VERIFY/CONSTRAINTS=(TABLE=JOB_HISTORY) MF_PERSONNEL.RDB %RMU-W-CONSTFAIL, Verification of constraint "JOB_HISTORY_FOREIGN1" has failed. $ ! $ ! Issue SQL statements to determine what the definition of the $ ! constraint is and which of the loaded rows violated $ ! the constraint. Then issue an SQL command to insert data that will $ ! restore the data integrity of the database: $ SQL SQL> ATTACH 'FILENAME MF_PERSONNEL.RDB'; SQL> SHOW TABLE JOB_HISTORY . . . JOB_HISTORY_FOREIGN1 Foreign Key constraint Column constraint for JOB_HISTORY.EMPLOYEE_ID Evaluated on COMMIT Source: JOB_HISTORY.EMPLOYEE_ID REFERENCES EMPLOYEES (EMPLOYEE_ID) . . . SQL> SELECT DISTINCT(EMPLOYEE_ID) cont> FROM JOB_HISTORY cont> WHERE NOT EXISTS cont> (SELECT * cont> FROM EMPLOYEES AS E cont> WHERE E.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID); EMPLOYEE_ID 10164 10165 10166 10167 10168 10169 6 rows selected SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10164', 'Smith'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10165', 'Frederico'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10166', 'Watts'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10167', 'Risley'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10168', 'Pietryka'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10169', 'Jussaume'); SQL> COMMIT; SQL> EXIT $ ! $ ! Check that data integrity has been restored: $ ! $ RMU/VERIFY/CONSTRAINTS=(CONSTRAINTS=JOB_HISTORY_FOREIGN1, - _$ TABLE=JOB_HISTORY) MF_PERSONNEL.RDB $ ! $ ! No messages are returned. Data integrity has been restored.
例7
次の例は、外部名が正しくない外部ファンクションを作成します。このファンクションを確認すると、Oracle RMUはエントリ・ポイントを見つけることができず、エラーを返します。外部ファンクションを削除して、正しく再作成します。これで、確認が正常に行われます。
$ ! Attach to database and create a function. The external name is $ ! mistyped: $ ! SQL> ATTACH 'filename mf_personnel.rdb'; SQL> create function SQRT (in double precision) returns double precision; cont> external name MTH$SORT location 'SYS$SHARE:MTHRTL' cont> language GENERAL cont> GENERAL PARAMETER STYLE; SQL> COMMIT; SQL> EXIT; $ ! $ ! Verify the function: $ ! $ RMU/VERIFY/ROUTINES MF_PERSONNEL.RDB %RMU-E-NOENTRPT, No entry point found for external routine SQRT. Image name is SYS$SHARE:MTHRTL. Entry point is MTH$SORT. $ ! $ ! Oracle RMU cannot find the entry point. Drop the $ ! function and reenter correctly: $ ! $ SQL SQL> ATTACH 'FILENAME mf_personnel.rdb'; SQL> DROP FUNCTION SQRT; SQL> create function SQRT (in double precision) returns double precision; cont> external name MTH$SQRT location 'SYS$SHARE:MTHRTL' cont> language GENERAL cont> GENERAL PARAMETER STYLE; SQL> COMMIT; SQL> EXIT; $ ! $ ! Verification is now successful: $ ! $ RMU/VERIFY/ROUTINES MF_PERSONNEL.RDB
例8
次の例は、RMU Verifyコマンドが、明示的に指定する場合のみ無効な制約を確認することを示します。
$ SQL SQL> ATTACH 'FILENAME MF_PERSONNEL.RDB'; SQL> -- Disable the EMP_SEX_VALUES constraint. SQL> ALTER TABLE EMPLOYEES DISABLE CONSTRAINT EMP_SEX_VALUES; SQL> COMMIT; SQL> -- Insert a value that violates the EMP_SEX_VALUES constraint. SQL> INSERT INTO EMPLOYEES cont> (EMPLOYEE_ID, LAST_NAME, SEX) cont> VALUES ('99999', 'JICKLING', 'G'); 1 row inserted SQL> COMMIT; SQL> EXIT; $ ! $ ! The following two verify commands do not return an error $ ! because the disabled constraint is not explicitly specified. $ ! $ RMU/VERIFY MF_PERSONNEL.RDB $ RMU/VERIFY MF_PERSONNEL.RDB/CONSTRAINTS $ ! $ ! The following verify command returns an warning message to $ ! inform you that data that violates the disabled constraint $ ! has been inserted into the database. $ ! $ RMU/VERIFY MF_PERSONNEL.RDB/CONSTRAINT=(CONSTRAINT=EMP_SEX_VALUES) %RMU-W-CONSTFAIL, Verification of constraint "EMP_SEX_VALUES" has failed.