ヘッダーをスキップ
Oracle Rdb for OpenVMS Oracle RMUリファレンス・マニュアル
リリース7.2
E06177-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1.65 RMU Verifyコマンド

データベースのデータ構造の内部整合性をチェックします。RMU Verifyコマンドでは、データそのものは確認されません。修飾子を使用して、データベースの特定の部分またはデータベースに格納されるルーチンの整合性を確認できます。

形式


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修飾子の説明を参照してください。

オプションは次のとおりです。

制約の確認の詳細は、『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コマンドはイメージ内のルーチンのエントリ・ポイントの存在をチェックできません。

さらに、RMU Verifyコマンドを発行するユーザーは、ルーチンをアクティブ化するためにOpenVMS SYSPRVが必要です。

Noroutines修飾子は、ルーチン・インタフェースを確認しないことを指定します。

1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。

デフォルトではOracle RMUはルーチンを確認しません。

Segmented_Strings

Nosegmented_Strings

データベースの3タイプの記憶領域すべて、すなわち読取り/書込み記憶領域および読取り専用記憶領域(読取り/書込みディスク・デバイス)、ライトワンス記憶領域(WORMオプティカル・ディスク・デバイス)において、各表の各列のすべてのリスト(セグメント文字列)データを確認します。RMU VerifyコマンドにAll修飾子を指定すると、データベースのすべての表のすべてのリスト・データ(セグメント文字列)が確認されます。Segmented_Strings修飾子を一緒に使用できるのはLareas修飾子のみです。この修飾子と一緒に使用すると次のように確認が行われます。

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

確認対象の記憶領域の検索ロックを設定します。

次のいずれかのキーワードを使用してトランザクション・モードを制御します。

キーワードIsolation_Level=[option]に次のいずれかのオプションを使用して、トランザクションの分離レベルを指定します。

トランザクション分離レベルの詳細は、『Oracle Rdb SQLリファレンス・マニュアル』のSET TRANSACTION文の説明を参照してください。

次のいずれかのキーワードを使用して待機設定を指定します。

1つのRMU Verifyコマンドラインで使用できる修飾子の組合せを決めるルールは、このコマンドの「使用上の注意」の項目を参照してください。


使用上の注意


例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.