RMU Analyzeコマンドは、データベース管理者に保守ツールを提供するものです。このコマンドは、データベース内での記憶域の利用状態を示した統計情報を、書式を整えて生成します。情報は、記憶領域、論理領域、または記憶領域内の特定のページ範囲を対象に、選択的に表示されます。RMU Analyzeコマンドでは、次の分析を行えます。
- データベース・ページの領域利用状態
- 記憶領域の利用状態
- 論理領域の利用状態
root-file-spec
分析するデータベース・ルート・ファイルのファイル指定。デフォルトのファイル拡張子は.rdbです。
Areas[=storage-area-list]
分析する記憶領域を指定します。各記憶領域は、名前か、または領域のID番号で指定します。デフォルト(Areas)では、すべての記憶領域が分析されます。Areas=*修飾子を指定することでも、すべての記憶領域を分析できます。複数の記憶領域を指定する場合は、storage-area-listパラメータに、記憶領域の名前またはID番号をカンマ区切りで指定し、それらをカッコで囲みます。Areas修飾子を省略した場合、すべての記憶領域の情報が表示されます。
StartとEndの修飾子をAreas修飾子と組み合せて使用すると、特定のページを分析できます。storage-area-listパラメータでの複数の記憶領域の指定に、StartとEndの修飾子を使用すると、指定された各記憶領域で、指定された同じ範囲のページが分析されます。
Areas修飾子は、間接コマンド・ファイルと組み合せて使用できます。詳細は、第1.3節を参照してください。
Binary_Output=file-option-list
Nobinary_Output
サマリー結果をバイナリ・ファイルに出力し、データ・ディクショナリと互換性のあるレコード定義ファイルをバイナリ出力ファイルに対して作成できます。バイナリ出力ファイルは、RMU LoadコマンドにRecord_Definition修飾子を使用して、Oracle Rdbデータベースにロードし、ユーザーが記述した管理アプリケーションまたはプロシージャで使用できます。バイナリ出力は、ユーザーが記述したアプリケーションまたはプロシージャで直接使用することもできます。有効なファイル・オプションは次のとおりです。
- File=file-spec
Fileオプションを使用すると、Analyzeコマンド・データは、分析された記憶領域および論理領域ごとに固定長のバイナリ・レコードを含むRMSファイルに格納されます。バイナリ出力ファイルのデフォルトのファイル拡張子は.unlです。次のコマンドでは、バイナリ出力ファイルanalyze_out.unlが作成されます。
$ RMU/ANALYZE/BINARY_OUTPUT=FILE=ANALYZE_OUT MF_PERSONNEL.RDB
- Record_Definition=file-spec
Record_Definitionオプションを使用すると、Analyzeコマンド・データのレコード定義がRMSファイルに格納されます。出力ファイルには、データ・ディクショナリ・コマンド形式(RDOフィールドおよびリレーション定義に非常によく似た形式)のサブセットで定義が含まれます。レコード定義出力ファイルのデフォルトのファイル拡張子は.rrdです。次のコマンドでは、出力ファイルanalyze_out.rrdが作成されます。
$ RMU/ANALYZE/BINARY_OUTPUT=RECORD_DEFINITION=ANALYZE_OUT - _$ MF_PERSONNEL.RDB
両方のファイル・オプションを1つのコマンドで指定できます。この場合、次のようにオプションをカンマで区切り、カッコで囲みます。
$ RMU/ANALYZE/BINARY_OUTPUT= - _$ (FILE=ANALYZE_OUT,RECORD_DEFINITION=ANALYZE_OUT) - _$ MF_PERSONNEL.RDB
Binary_Output修飾子を指定する場合、少なくとも1つのオプションを指定する必要があります。デフォルトはNobinary_Output修飾子で、出力ファイルは作成されません。
End=integer
分析を終了するページ番号を指定します。デフォルトは、記憶領域ファイルの最後です。Exclude=options
RMU Analyzeコマンド出力から情報を除外します。Exclude=System_RecordsまたはExclude=Metadata、あるいは両方を指定できます。両方のオプションを指定する場合、オプションをカッコに含め、カンマで区切ります。Exclude修飾子を指定しない場合、データベースのすべての論理領域に対するデータが出力されます。
オプションは次のとおりです。
- System_Records
Analyzeコマンド出力から、RDB$SYSTEM_RECORDS論理領域に関する情報が除外されます。- Metadata
RMU Analyzeコマンド出力から、すべてのOracle Rdb論理領域(RDB$SYSTEM_RECORDS論理領域、RDB$COLLATIONS_NDX論理領域など)が除外されます。
Exclude修飾子で除外された論理領域に関するデータは蓄積されますが、Analyze出力からは除外されます。
1つのRMU Analyzeコマンドで、Exclude修飾子とLareas修飾子の両方は使用できません。
Lareas [=logical-area-list]
Nolareas
分析する論理領域を指定します。データベースの各表は論理領域名に関連付けられています。デフォルトであるLareas修飾子では、すべての論理領域が分析されます。Lareas=*修飾子を指定することでも、すべての論理領域を分析できます。複数の論理領域を指定する場合、logical-area-listに論理領域名をカンマで区切って指定し、このリストをカッコで囲みます。Lareas修飾子は、間接コマンド・ファイルと組み合せて使用できます。詳細は、第1.3節を参照してください。
Option=type
分析に含まれる情報のタイプおよび詳細レベルを指定します。3種類の出力が使用できます。
- Normal
サマリー情報のみが出力に含まれます。Normalオプションがデフォルトです。- Full
ヒストグラムとサマリー情報が出力に含まれます。- Debug
データ、ヒストグラムおよびサマリー情報に関する内部情報が出力に含まれます。Debugオプションは、通常、診断サポート目的で使用されます。Debugオプションを使用してデータを抽出し、独自に分析を行うこともできます。
Output=file-name
出力先のファイルの名前を指定します。デフォルトのファイル拡張子は.lisです。Output修飾子を指定しない場合、SYS$OUTPUTが出力先です。Start=integer
分析を開始するページ番号を指定します。デフォルトは1です。
- データベースに対してRMU Analyzeコマンドを使用するには、データベースのルート・ファイルACLにRMU$ANALYZE権限を持っているか、OpenVMSのSYSPRVまたはBYPASS権限を持っている必要があります。
- RMU Analyzeコマンドが、閉じたデータベースに発行されると、他のユーザーがデータベースにアタッチできない状態でコマンドが実行されます。
- RMU Analyzeコマンドでは、WORM(書込み1回、読取り複数回)光ディスク・デバイス上のライトワンス記憶領域の分析がサポートされます。最終更新を過ぎたページも含め、すべての初期化されていないページが、初期化されたページと同様に分析されます。すべての割当て済ページが未使用ページとしてカウントされるため、予想以上に多くのページが分析される可能性があります。
- このコマンドの最高のパフォーマンスを得るには、検出済非同期プリフェッチが有効である必要があります。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 Analyzeコマンドでは、結果がdb.rrdという名前のレコード定義ファイルに出力されます。このファイルは、データ・ディクショナリに新規の列および表を作成する構文に準拠しています。
$ RMU/ANALYZE/BINARY_OUTPUT=RECORD_DEFINITION=DB.RRD MF_PERSONNEL $! Display the db.rrd file created by the previous command: $ TYPE DB.RRD
DEFINE FIELD RMU$DATE DATATYPE IS DATE. DEFINE FIELD RMU$AREA_NAME DATATYPE IS TEXT SIZE IS 32. DEFINE FIELD RMU$STORAGE_AREA_ID DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$FLAGS DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$TOTAL_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$EXPANDED_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$FRAGMENTED_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$EXPANDED_FRAGMENT_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$TOTAL_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$FRAGMENTED_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$FRAGMENT_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$PAGE_LENGTH DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$MAX_PAGE_NUMBER DATATYPE IS SIGNED LONGWORD. DEFINE FIELD RMU$FREE_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$OVERHEAD_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$AIP_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$ABM_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$SPAM_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$INDEX_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$BTREE_NODE_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$HASH_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$DUPLICATES_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$OVERFLOW_BYTES DATATYPE IS F_FLOATING. DEFINE FIELD RMU$LOGICAL_AREA_ID DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$RELATION_ID DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$RECORD_ALLOCATION_SIZE DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$TOTAL_SPACE DATATYPE IS F_FLOATING. DEFINE RECORD RMU$ANALYZE_AREA. . . .
- 次のリストで、db.rrdレコード定義の各フィールドについて説明します。
- RMU$DATE
Analyze処理が行われた日付が含まれます。- RMU$AREA_NAME
分析された記憶領域の名前が含まれます。- RMU$STORAGE_AREA_ID
分析された記憶領域の領域IDが含まれます。- RMU$FLAGS
このフィールドにとり得る3つの値には、次の意味があります。
- 0: レコードが論理領域レコードではなく、記憶領域レコードであることを示します。
- 1: 論理領域に対してデータ圧縮が有効でないことを示します。
- 3: 論理領域に対してデータ圧縮が有効であることを示します。
- RMU$TOTAL_BYTES
論理領域に格納されているデータの合計サイズが含まれます。- RMU$EXPANDED_BYTES
展開後、論理領域に格納されているデータの合計サイズが含まれます。- RMU$FRAGMENTED_BYTES
格納されている断片のバイト数が含まれます。- RMU$EXPANDED_FRAGMENT_BYTES
展開後、格納されている断片のバイト数が含まれます。- RMU$TOTAL_COUNT
格納されているレコードの総数が含まれます。- RMU$FRAGMENTED_COUNT
- 断片化されているレコードの数が含まれます。
- RMU$FRAGMENT_COUNT
格納されている断片の数が含まれます。- RMU$PAGE_LENGTH
記憶領域内のデータベース・ページの長さ(バイト)が含まれます。- RMU$MAX_PAGE_NUMBER
記憶領域で最後に初期化されたページのページ番号が含まれます。- RMU$FREE_BYTES
記憶領域で未使用のバイト数が含まれます。- RMU$OVERHEAD_BYTES
記憶領域でオーバーヘッドに使用されるバイト数が含まれます。- RMU$AIP_COUNT
記憶領域内の領域インベントリ・ページ(AIP)の数が含まれます。- RMU$ABM_COUNT
記憶領域内の領域ビットマップ(ABM)ページの数が含まれます。
- RMU$SPAM_COUNT
記憶領域内の領域管理(SPAM)ページの数が含まれます。- RMU$INDEX_COUNT
記憶領域内の索引レコードの数が含まれます。- RMU$BTREE_NODE_BYTES
記憶領域内のソート索引のバイト数が含まれます。- RMU$BTREE_NODE_BYTES
記憶領域内のハッシュ索引のバイト数が含まれます。- RMU$DUPLICATES_BYTES
記憶領域内のソート索引に対する重複キー値のバイト数が含まれます。- RMU$OVERFLOW_BYTES
記憶領域内のハッシュ・バケット・オーバーフロー・レコードのバイト数が含まれます。- RMU$LOGICAL_AREA_ID
分析された論理領域の論理領域IDが含まれます。- RMU$RELATION_ID
分析された論理領域内の行のレコード・タイプが含まれます。- RMU$RECORD_ALLOCATION_SIZE
表が最初に定義されたときの行のサイズが含まれます。- RMU$TOTAL_SPACE
論理領域でのユーザー・データの格納に使用できるバイト数(使用済領域 + 空き領域 + オーバーヘッド)が含まれます。
例1次のコマンドでは、mf_personnelデータベースのEMPIDS_LOWおよびEMP_INFO記憶領域が分析されます。
$ RMU/ANALYZE/AREAS=(EMPIDS_LOW,EMP_INFO)/OUTPUT=EMP.OUT - _$ MF_PERSONNEL.RDB
例2
次の両コマンドでは、mf_personnelデータベースのDEPARTMENTSおよびSALARY_HISTORY記憶領域が分析されます。
$! Using storage area names to specify storage areas $ RMU/ANALYZE/AREAS=(DEPARTMENTS,SALARY_HISTORY) MF_PERSONNEL.RDB - $ /OUTPUT=DEP_SAL.OUT $! $! Using storage area ID numbers to specify storage areas $ RMU/ANALYZE/AREAS=(2,9) MF_PERSONNEL.RDB /OUTPUT=DEP_SAL.OUT