RMU Analyze Placementコマンドによって、索引構造に関係する行の配置を分析する保守ツールが提供され、この統計情報の表示が書式を整えられて生成されます。記憶領域を指定して情報を表示できます。RMU Analyze Placementコマンドでは、WORM(書込み1回、読取り複数回)光ディスク・デバイス上のライトワンス記憶領域での、索引構造に関係する行の配置の分析がサポートされます。論理EOFを超えるページも含め、すべての初期化されていないページが、初期化されたページと同様に分析されます。つまり、すべての割当て済ページが未使用ページとしてカウントされます。予想以上に多くのページが分析される可能性があります。
RMU Analyze Placementコマンドを使用すると、次のことを確認できます。
- データ・レコードへの最大パス長および平均パス長。(データ・レコードへ達するまでに接触するレコードの最大数および平均数。)
- データ・レコードへの推定最大I/Oパス長。
- データ・レコードへの推定最小I/Oパス長。
- 指定した索引に対するデータベース・キー(dbkey)パス長、最大I/Oパス長および最小I/Oパス長の頻度分布。
- 論理領域識別子(ID)とdbkeyごとに示した記憶領域内のデータ・ページ上のデータ・レコードの分布、各データ・レコードへ達するまでに必要なdbkeyの数、データ・レコードへ達するまでに必要な最大および最小I/Oパス長、およびデータ・レコードの特定のdbkey。
root-file-spec
分析するデータベース・ルート・ファイルのファイル指定。デフォルトのファイル拡張子は.rdbです。index-name[,...]
情報を収集する索引の名前。デフォルトはすべての有効な索引です。無効な索引に関する情報が必要な場合、これを名前で指定する必要があります。このパラメータはオプションです。間接ファイル参照を使用できます。
Areas[=storage-area-list]
分析する記憶領域を指定します。各記憶領域は、名前または領域のID番号で指定します。特定の索引の配置情報が必要な場合、索引ではなく、データが含まれる領域を指定します。たとえば、mf_personnelデータベースのSH_EMPLOYEE_ID索引の配置情報が必要な場合、RDB$SYSTEM(索引が含まれる)ではなく、SALARY_HISTORY(データが含まれる)を記憶領域として指定する必要があります。
Areas修飾子を指定しない場合、あるいはAreas修飾子を指定してstorage-area-listを指定しない場合、すべての記憶領域に関する情報が表示されます。
複数の記憶領域を指定する場合、storage-area-listに記憶領域の名前またはID番号をカンマで区切って指定し、このリストをカッコで囲みます。
Areas修飾子に複数の記憶領域を指定した場合、Oracle RMUでの分析で得られるのは、指定したすべての領域に関するサマリーです。分析が、指定した記憶領域ごとに異なるセクションに分けられることはありません。指定した記憶領域の索引情報を得るには、その領域のみをAreas修飾子に指定してRMU Analyze Placementコマンドを発行します。
Areas修飾子は、間接ファイル参照と組み合せて使用できます。詳細は、第1.3節を参照してください。
Areas修飾子(storage-area-listなし)がデフォルトです。
Binary_Output[=file-option-list]
Nobinary_Output
Binary_Output修飾子を指定すると、サマリー結果をバイナリ・ファイルに格納し、データ・ディクショナリと互換性のあるレコード定義ファイルをバイナリ出力ファイルに対して作成できます。バイナリ出力ファイルは、RMU LoadコマンドにRecord_Definition修飾子を使用してOracle Rdbデータベースにロードし、ユーザーが記述した管理アプリケーションまたはプロシージャで使用できます。バイナリ出力は、ユーザーが記述したアプリケーションまたはプロシージャで直接使用することもできます。有効なファイル・オプションは次のとおりです。
- File=file-spec
Fileオプションを使用すると、RMU Analyze Placementコマンド・データは、分析された索引ごとに固定長のバイナリ・レコードを含むRMSファイルに格納されます。バイナリ出力ファイルのデフォルトのファイル拡張子は.unlです。次のコマンドでは、バイナリ出力ファイルanalyze_out.unlが作成されます。
$ RMU/ANALYZE/PLACEMENT - _$ /BINARY_OUTPUT=FILE=ANALYZE_OUT MF_PERSONNEL.RDB
- Record_Definition=file-spec
Record_Definitionオプションを使用すると、RMU Analyze Placementコマンド・データのレコード定義がRMSファイルに格納されます。出力ファイルには、データ・ディクショナリ・コマンド形式のサブセットでレコード定義が含まれます。レコード定義出力ファイルのデフォルトのファイル拡張子は.rrdです。.rrdファイルの詳細は、付録Aを参照してください。次のコマンドでは、出力ファイルanalyze_out.rrdが作成されます。
$ RMU/ANALYZE/PLACEMENT - _$ /BINARY_OUTPUT=RECORD_DEFINITION=ANALYZE_OUT MF_PERSONNEL.RDB
両方のファイル・オプションを1つのコマンドで指定できます。この場合、次のようにオプションをカンマで区切り、カッコで囲みます。
$ RMU/ANALYZE/PLACEMENT/BINARY_OUTPUT= - _$ (FILE=ANALYZE_OUT,RECORD_DEFINITION=ANALYZE_OUT) - _$ MF_PERSONNEL.RDB
デフォルトはNobinary_Output修飾子で、出力ファイルは作成されません。
Exclude=Metadata
RMU Analyze Placementコマンド・データから情報を除外します。Exclude=Metadata修飾子を指定すると、すべてのOracle Rdb索引(RDB$NDX_REL_NAME_NDX索引、RDB$COLLATIONS_NDX索引など)に関する情報が、RMU Analyze Placementコマンドの出力から除外されます。Exclude修飾子を指定しない場合、データベースのすべての索引に対するデータが出力されます。Exclude修飾子で除外された索引に関するデータは蓄積されますが、RMU Analyze Placementコマンドの出力からは除外されます。
1つのRMU Analyze Placementコマンドで、Exclude修飾子と1つ以上の索引名を指定することはできません。
Option=type
分析に含まれる情報のタイプおよび詳細レベルを指定します。3種類の出力が使用できます。
- Normal
サマリー情報のみが出力に含まれます。Normalがデフォルトです。- Full
ヒストグラムとサマリー情報が出力に含まれます。- Debug
データ、ヒストグラムおよびサマリー情報に関する内部情報が出力に含まれます。出力には、圧縮された索引から導出した圧縮されていない索引キーが含まれます。16進での出力は、圧縮されていない索引キーのものです。ただし、表示される長さは、圧縮された索引キーのものです。RMU Analyze Placementおよび索引キーの表示の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
Output=file-name
出力先のファイルの名前を指定します。デフォルトのファイル・タイプは.lisです。Output修飾子を指定しない場合、デフォルトの出力先はSYS$OUTPUTです。Transaction_Type=option
分析操作に使用されるトランザクションのモードを指定できます。有効なオプションは次のとおりです。
- Automatic
- Read_Only
- Noread_Only
この修飾子を使用する場合、オプションを指定する必要があります。
この修飾子のどの形式も使用しない場合、Transaction_Type=Automatic修飾子がデフォルトです。この修飾子は、分析操作に使用されるトランザクション・モードをOracle RMUで決定するよう指定します。データベース内の記憶領域(分析操作でアクセスされないものも含む)でスナップショットが無効の場合、分析操作に使用されるトランザクションは、読取り/書込みモードに設定されます。そうでない場合は、トランザクションは読取り専用モードに設定されます。
Transaction_Type=Read_Only修飾子は、分析操作に使用されるトランザクションを読取り専用モードに設定するよう指定します。トランザクション・タイプを明示的に読取り専用に指定する場合、データベース内のすべての記憶領域でスナップショットが有効である必要はありませんが、分析される記憶領域では有効である必要があります。そうでない場合、エラーが返され、分析操作は失敗します。
すべての記憶領域でスナップショットが有効になっておらず、スナップショットが有効な記憶領域でのみオブジェクトを分析する場合、このオプションを選択します。この場合、Transaction_Type=Read_Only修飾子を使用することによって、分析操作が行われ、データベースの他のユーザーに対しては最小限のロックが課されます。
Transaction_Type=Noread_Only修飾子は、分析操作に使用されるトランザクションを読取り/書込みモードに設定するよう指定します。読取り専用トランザクションで起こるスナップショット・ファイルの増大化を避け、読取り/書込みトランザクションで起こるロックの増加というコストを甘受できる場合、このオプションを選択します。
- データベースに対してRMU Analyze Placementコマンドを使用するには、データベースのルート・ファイルACLにRMU$ANALYZE権限を持っているか、OpenVMSのSYSPRVまたはBYPASS権限を持っている必要があります。
- RMU Analyze Placementコマンドが、閉じたデータベースに発行されると、他のユーザーがデータベースにアタッチできない状態でコマンドが実行されます。
- 次のRMU Analyze Placementコマンドでは、データ・ディクショナリと互換性のあるplacement.rrdという名前のRMSレコード定義ファイルに結果が出力されます。
$ RMU/ANALYZE/PLACEMENT/BINARY_OUTPUT=RECORD_DEFINITION=PLACEMENT.RRD - _$ MF_PERSONNEL $! $! Display the placement.rrd file created by the previous command: $ TYPE PLACEMENT.RRD
DEFINE FIELD RMU$DATE DATATYPE IS DATE. DEFINE FIELD RMU$INDEX_NAME DATATYPE IS TEXT SIZE IS 32. DEFINE FIELD RMU$RELATION_NAME DATATYPE IS TEXT SIZE IS 32. DEFINE FIELD RMU$LEVEL DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$FLAGS DATATYPE IS SIGNED WORD. DEFINE FIELD RMU$COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$DUPLICATE_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$KEY_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$DUPLICATE_KEY_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$DATA_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$DUPLICATE_DATA_COUNT DATATYPE IS F_FLOATING. DEFINE FIELD RMU$TOTAL_KEY_PATH DATATYPE IS F_FLOATING. DEFINE FIELD RMU$TOTAL_PAGE_PATH DATATYPE IS F_FLOATING. DEFINE FIELD RMU$TOTAL_BUFFER_PATH DATATYPE IS F_FLOATING. DEFINE FIELD RMU$MAX_KEY_PATH DATATYPE IS F_FLOATING. DEFINE FIELD RMU$MAX_PAGE_PATH DATATYPE IS F_FLOATING. DEFINE FIELD RMU$MIN_BUF_PATH DATATYPE IS F_FLOATING. DEFINE RECORD RMU$ANALYZE_PLACEMENT.
- 次のリストで、placement.rrdレコード定義の各フィールドについて説明します。
- RMU$DATE
分析操作が行われた日付が含まれます。- RMU$INDEX_NAME
分析された索引の名前が含まれます。- RMU$RELATION_NAME
索引が定義されている表の名前が含まれます。- RMU$LEVEL
索引レベルの最大数が含まれます。- RMU$FLAGS
このフィールドにとり得る6つの値には、次の意味があります。
- 0: 索引はソートされ、一意ではありません。
- 1: 索引はソートされ、一意です。
- 2: 索引はハッシュされ、一意ではありません。
- 3: 索引はハッシュされ、一意です。
- 4: 索引はランク付きソートされ、一意ではありません。
- 5: 索引はランク付きソートされ、一意です。
RMU Analyze Placementコマンドでは、RMU$FLAGSビットを表1-3のように使用し、索引の情報を示します。
表1-3 RMU Analyze Placementコマンドで使用されるRMU$FLAGSビット ビット・オフセット 意味 0 真の場合、一意索引 1 真の場合、ハッシュ索引 2 真の場合、ランク付きソート索引
- RMU$COUNT
索引ノードの数が含まれます。- RMU$DUPLICATE_COUNT
重複レコードの数が含まれます。- RMU$KEY_COUNT
キーの数が含まれます。- RMU$DUPLICATE_KEY_COUNT
重複キーの数が含まれます。- RMU$DATA_COUNT
レコードの数が含まれます。- RMU$DUPLICATE_DATA_COUNT
重複レコードの数が含まれます。- RMU$TOTAL_KEY_PATH
すべてのレコードにアクセスするために接触されるキーの総数が含まれます。- RMU$TOTAL_PAGE_PATH
すべてのレコードにアクセスするために接触されるページの総数が含まれます。- RMU$TOTAL_BUFFER_PATH
すべてのレコードにアクセスするために接触されるバッファの総数が含まれます。- RMU$MAX_KEY_PATH
レコードにアクセスするために接触されるキーの最大数が含まれます。- RMU$MAX_PAGE_PATH
レコードにアクセスするために接触されるページの最大数が含まれます。- RMU$MIN_BUF_PATH
レコードにアクセスするために接触されるバッファの最小数が含まれます。
例1次のコマンドで、サンプル人事データベースのDEPARTMENTS_INDEX索引に関係する行の格納に関する情報が得られます。
$ RMU/ANALYZE/PLACEMENT MF_PERSONNEL.RDB DEPARTMENTS_INDEX
------------------------------------------------------------------------ Indices for database - DISK1:[DB]MF_PERSONNEL.RDB; ------------------------------------------------------------------------ Index DEPARTMENTS_INDEX for relation DEPARTMENTS duplicates not allowed Levels: 1, Nodes: 1, Keys: 26, Records: 26 Maximum path length -- DBkeys: 2, IO range: 1 to 2 Average path length -- DBkeys: 2.00, IO range: 1.00 to 1.65 -------------------------------------------------------------------------