ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

MONITOR

MONITORコマンドは、指定されたプログラムの各行のパフォーマンス・コストを記録します。MONITORから有効な情報を得るには、現行セッションがOracle OLAPで実行されている唯一のセッションである必要があります。さらに、ホスト・コンピュータ上で起動されるプロセスの数が増えるにつれて、MONITORの実行結果の精度は低下します。

最初にMONITOR文を使用して監視対象のプログラムを指定し、次にプログラムを実行してMONITORを再度使用し結果を取得します。プログラムの特定の行が繰り返し実行されると、そのプログラム行を対象とするモニター・リストの1行に、実行に要した全累積コストがMONITORによって記録されます。

1行のコードの実行時間が長い場合、パフォーマンス・コストが高いとみなされます。TRACKPRG文で比較的コストが高いプログラムを特定し、MONITORを使用してそのプログラム内で所要時間の長い行を特定します。必要な場合は、TRACKPRGとMONITORを同時に使用できます。

構文

MONITOR ON [programs] | OFF | INIT | FILE [[APPEND] file-name] | RESET

ここで、programsは次のいずれかです。

ALL [awlist]
program-name

パラメータ

ON

Oracle OLAPがタイミング・データをモニター・リストに1行ずつ収集できるように、実行される指定プログラムの検索を開始します。(監視がすでにオンになっている場合は、中断せずに現行の監視を継続し、監視がオフになっている場合は間隔を置いて再開します。)

programsに値を指定しなかった場合は、最後に実行されたMONITOR ON文で指定したプログラム(または複数のプログラム)がデフォルトになります。現行セッションに該当する文がなかった場合、データは収集されず、エラーも発生しません。

ALL

1つ以上のアナリティック・ワークスペースにあるすべてのプログラムを監視対象として指定します。

awlist

監視するプログラムがある1つ以上のアナリティック・ワークスペースの名前(必要に応じてカンマで区切る)。この引数を省略した場合、アタッチされているすべてのアナリティック・ワークスペースにあるすべてのプログラムがOracle OLAPによって監視されます。

program-name

監視対象の特定のプログラムの名前。

OFF

プログラムの監視を停止し、現在モニター・リストにあるすべてのタイミング・データを固定します。これによりすぐに、またはセッションの後半で、リストを現行の出力ファイルまたはテキスト・ファイルに送信できます。

RESET

(監視がオンの場合にのみ有効)現在監視の対象となっているプログラムに関する情報、および現行モニター・リストに割り当てられているOracle OLAPメモリーを保持します。ただし、リストに現在格納されているタイミング・データは破棄されます。また、RESETにより、MONITORは同じプログラムが再び実行されるのを待機します。同じプログラムを実行すると、前と同じメモリー割当てのその同じプログラムに関して新しいタイミング・データが新しいモニター・リストに自動的に収集されます。

INIT

(監視がオンの場合にのみ有効)監視の環境を初期化します。初期化では、現行モニター・リストに関連付けられているプログラム名とタイミング・データが破棄され、そのリストのために前に使用されていたOracle OLAPメモリーが解放されます。これにより、メモリーを他の目的や、新しいモニター・リストへの新しいデータの収集に使用できます。

FILE

現行モニター・リストにあるタイミング・データをファイルに送ることを指定します。

APPEND

タイミング・データを既存のファイルに追加することを指定します。この引数を省略すると、ファイルの現在の内容は新しい出力によって置き換えられます。

file-name

出力を受け取るファイルの名前を表すテキスト式。そのファイルがカレント・ディレクトリにない場合、ファイルの名前にディレクトリ・オブジェクトの名前を含める必要があります。file-nameを指定すると、データは指定のテキスト・ファイルに送られます。モニター・リストはFILEの影響を受けないため、同じリストを異なる宛先に繰り返し送ることができます。file-nameを省略すると、現行モニター・リストにあるタイミング・データが現行の出力ファイルに送られます。


注意:

ディレクトリ・オブジェクトはデータベースで定義され、ディレクトリおよびディレクトリ内のファイルへのアクセスを制御します。CDA文を使用して、カレント・ディレクトリ・オブジェクトを特定および指定できます。使用するデータベース・ユーザー名で読取りおよび書込み可能なファイルがあるディレクトリ・オブジェクトへのアクセス権については、Oracle DBAに問い合せてください。

使用上の注意

モニター・リスト

モニター・リスト内の各エントリ(つまり、行)は、実行回数にかかわらず、プログラムの1行を対象にします。各エントリは次の4つのセクションに分けられます。

  • すべての実行時間の合計時間(ミリ秒単位。最も近い10ミリ秒に丸める): 列1から11

  • 実行回数: 列12から18

  • 行番号: 列19から23

  • 行の本文: 列24以降

次にMONITOR出力のサンプルを示します。参考のために列番号を付けます。

12345678901234567890123456789012345678901234567890
 
60              1    1 push name 
30              1    2 trap on GETOUT noprint 
51              1    3 limit name to obj(type) eq 'DIMENSION'
0               1    4 for name 
0               0    5    do 
450             6    6    limit &name to ALL ifnone BYPASS 
0               0    7 BYPASS: 
0               0    8    doend 
0               0    9 GETOUT: 
0               1   10 pop name 

次に示すのは、この出力を得るために使用したプログラムの完全な詳細です。出力では、LIMITコマンドの行は長すぎるために切り捨てられています。

DEFINE allstat PROGRAM
LD Program to set the status of all dimensions in the analytic workspace to ALL
PROGRAM
PUSH NAME
TRAP ON getout NOPRINT
LIMIT NAME TO OBJ(TYPE) EQ 'Dimension' IFNONE getout
FOR NAME
   DO
   LIMIT &NAME TO ALL IFNONE bypass
bypass:
   DOEND
getout:
POP NAME
END

アナリティック・ワークスペースのアタッチ、デタッチおよび再アタッチ

アタッチ、デタッチおよび再アタッチされたアナリティック・ワークスペースでOracle OLAPがプログラムを実行すると、新しいデータ・ブロックが収集されます。

ステートメント行の切捨て

プログラム行は、長すぎるとMONITOR出力から切り捨てられます。継続行は出力に表示されません。

レポートの生成

MONITORファイルのタイミング・データからOracle OLAPレポートを生成する場合は、FILEREAD文を使用してデータをOracle OLAP変数に読み取るプログラムを作成してから、Oracle OLAPレポート生成機能を使用してレポートを生成できます。TRACKREPORTプログラムをモデルとして使用できます。ただし、TRACKREPORTプログラムは、MONITOR出力ではなくTRACKPRG出力に対するレポートの生成のために作成されています。

複数の行の一括化

プログラム内の特定の行または行のグループの実行時間を測定する場合は、プログラムにMONITOR ON文およびMONITOR OFF文を挿入して目的の行のみを囲みます。

ネストしたプログラムでのMONITORの使用

ネストしたプログラムが単独で実行されないようにする場合は、そのプログラムの名前をMONITOR ON文に指定してからこの文をコールするプログラムを実行します。MONITORによって収集されるタイミング・データは、(ネストした)指定のプログラムのみを対象とします。指定のプログラムが複数回コールされると、MONITORは、プログラム行ごとにその行が実行された全回数に要した秒数を累計し、その行の実行回数を示します。

複数回コールされるネストしたプログラムの特定の回の実行時間を測定する場合は、コール側のプログラムにMONITOR ON文およびMONITOR OFF文を挿入して目的の1回のコールを囲みます。

非常に小さなプログラムでのMONITORの使用

非常に小さいプログラムは、結果を正確に再現できないことがあります。CPUが処理を中断して他のタスクを実行すると、実行時間の合計に占めるその時間の割合が大きくなるからです。

MONITORの測定単位

MONITORコマンドおよびTRACKPRGコマンドでは、実行時間を記録する単位としてミリ秒を使用します。実行時間には、I/Oの所要時間および次の文の待機時間は含まれません。

例10-66 MONITORによるタイミング・データの収集

この例では、MONITORを使用して、prog1の各コード行の実行に関するタイミング・データを収集し、そのデータをテキスト・ファイルに送ります。次に、MONITOR ON文を使用してprog1タイミング・データを破棄してprog2に関するデータの収集を開始します。prog2のデータを2番目のファイルに送ったら、MONITOR INITを使用して現行モニター・リストを破棄し、このために使用していたメモリーを解放します。

MONITOR ON prog1
prog1
MONITOR FILE prog1.mon
MONITOR ON prog2
prog2
MONITOR OFF
MONITOR FILE prog2.mon
MONITOR INIT