TRACKPRGコマンドは、トラッキングをオンにしている間に実行されるすべてのプログラムのパフォーマンス・コストを追跡するコマンドです。TRACKPRGによって意味のある情報を得るためには、Oracle OLAPで実行するセッションは1つのみにする必要があります。さらに、ホスト・コンピュータで多くのプロセスが起動されるほど、TRACKPRGの結果の精度が低下します。
TRACKPRGをオンにして、追跡するプログラムを実行し、再度TRACKPRGを使用して結果を取得します。各プログラムが実行されるたびに、TRACKPRGはそのコスト・データを1つのエントリとして、そのトラッキング・リストに格納します。別のプログラムを実行すると、新しいエントリがリストに追加され、Oracle OLAPメモリー(未使用の記憶域)に保持されます。
プログラムまたはコードの行は、実行に時間がかかる場合はパフォーマンス・コストが高いとみなされます。TRACKPRGで相対的にコストが高いプログラムを特定し、さらにMONITOR文を使用してそのプログラム内で所要時間の長い行を特定します。必要な場合は、両方のコマンドを同時に使用できます。
パラメータ
実行するプログラムの検索を開始して、トラッキング・リストにタイミング・データを収集できるようにします。(トラッキングがすでにオンになっている場合は、中断せずに現行のトラッキング処理を継続し、トラッキングがオフになっている場合は間隔を置いて再開します。)
プログラムのトラッキングを停止し、現在トラッキング・リストにあるすべてのタイミング・データを固定します。これによりすぐに、またはセッションの後半で、リストを現行の出力ファイルまたはテキスト・ファイルに送信できます。
トラッキング・リストを送信する場所を指定します。TRACKPRG FILEはトラッキング・リストには影響を与えないため、異なる送信先に同じリストを繰返し送信できます。
Oracle OLAPがトラッキング・リストを、file-nameにより示されるファイルと置き換えるのではなく、その内容に追加するように指定します。
Oracle OLAPがデータを送信する先のテキスト式。そのファイルがカレント・ディレクトリにない場合、ファイルの名前にディレクトリ・オブジェクトの名前を含める必要があります。
注意: ディレクトリ・オブジェクトはデータベースで定義され、ディレクトリおよびディレクトリ内のファイルへのアクセスを制御します。CDA文を使用して、カレント・ディレクトリ・オブジェクトを特定および指定できます。使用するデータベース・ユーザー名で読取りおよび書込み可能なファイルがあるディレクトリ・オブジェクトへのアクセス権については、Oracle DBAに問い合せてください。 |
file-nameを省略すると、Oracle OLAPは現在トラッキング・リストにあるタイミング・データを現行の出力ファイルに送信します。
現行のトラッキング・リストにあるタイミング・データを廃棄し、そのリストに使用されていたOracle OLAPメモリーを解放します(メモリーを他の目的で使用する場合に役立ちます)。さらに、トラッキングがオンになっている場合は、プログラムの実行の待機を再開し、それらのデータを完全に新しいトラッキング・リストに収集できるようになります。
使用上の注意
単一の実行
トラッキング・リストの各エントリ(つまり、行)には、単一のプログラムの単一の実行に関する情報が記録されます。
コールの深さ
各エントリには、現行のプログラムに対するコール(存在する場合)の深さ、つまり現行の行で報告されたプログラムに対して行われたプログラム・コールの数が記録されます。TRACKPRGの出力では、コールの深さはプログラム名のインデントにより示されます。TRACKPRGは、インデントされた各プログラムについて、そのプログラムに対するコールを行ったプログラムの名前もエントリの終わりに記録します。
タイミング・データのタイプ
各エントリで、TRACKPRGは2つのタイプのタイミング・データを記録します。
限定的コスト -- プログラムによってコールされた他のプログラムで消費された時間を除く、そのプログラムで消費された時間
包括的コスト -- プログラムによってコールされた他のプログラムで消費された時間を含む、そのプログラムで消費された時間
これにより、両方のタイプのコストに関するレポートを生成するオプションを選択できます。
エントリのセクション
TRACKPRGの出力では、各エントリ(行)は次の4つのセクションに分けられます。
プログラム名: 文字の列1から38
限定的な時間: 列39から49
包括的な時間: 列50から60
コール側プログラムの名前: 列61から77
(MAINプログラムの)TRACKPRG出力のサンプルは次のとおりです。参照用の列番号が付いています。
1234567890123456789012345678901234567890123456789012345678901234567890 MAIN 39.6198425 225.551453 COMM 43.793808 185.93161 MAIN _C.SYS.INFO .112533569 .112533569 COMM _C.SYS.INFO .087173462 .087173462 COMM _C.MAIN 61.414505 141.938095 COMM _C.CON 66.7147064 80.5235901 _C.MAIN _C.SYS.DORETURN .032287598 .032287598 _C.CON
TRACKREPORTプログラム
Oracle OLAPのレポート機能を使用して、TRACKPRGによって作成されるテキスト・ファイルのタイミング・データからレポートを生成する場合、TRACKREPORTプログラムを使用できます。構文は次のとおりです。
TRACKREPORT textfile-name
textfile-name引数は、レポート作成の元となる、TRACKPRGにより作成されたテキスト・ファイルのファイル名です。TRACKREPORTは、FILEREAD文を使用してデータをOracle OLAP変数に読み込んだ後、Oracle OLAPのレポート機能を使用して次のサンプルのようなレポートを生成します。
Exclusive Inclusive Number of Program name cost cost calls ____________________ __________ __________ __________ COMM 43.793808 185.93161 1 MAIN 39.6198425 225.551453 1 _C.CON 66.7147064 80.5235901 1 _C.ENV.PUTOPTS 1.15296936 1.15296936 1 _C.ENV.XLATEIN 6.32765198 6.32765198 1 _C.MAIN 61.414505 141.938095 1 _C.SYS.DORETURN .032287598 .032287598 1 _C.SYS.INFO .289932251 .289932251 3 _C.SYS.NOF10 .038269043 .038269043 1 _CONNECT 5.3609314 6.16748047 1 _CONNNONE .806549072 .806549072 1
TRACKPRGファイルからのデータをさらに処理する場合、モデルとしてTRACKREPORT
プログラムを使用して独自のプログラムを作成できます。
対象外のサブプログラム
タイミング・データを収集しているプログラムがコールするすべてのサブプログラムについての個別のパフォーマンス・データが必要ない場合、プログラム全体で、対象外にするサブプログラムをコールする前にトラッキングをオフにし、対象とするプログラムをコールする前にトラッキングを再びオンにします。この操作は繰返し実行できます。ただし、TRACKPRGは対象外のサブプログラムを個別に追跡しないため、対象外のサブプログラムが消費する時間はプログラム全体の包括的な時間だけでなく、限定的な時間の合計にも割り当てられる点に注意してください。
非常に小さなプログラムでのTRACKPRGの使用
非常に小さいプログラムは、結果を正確に再現できないことがあります。CPUが処理を中断して他のタスクを実行すると、実行時間の合計に占めるその時間の割合が大きくなるからです。
TRACKPRGの測定単位
MONITORコマンドおよびTRACKPRGコマンドでは、実行時間を記録する単位としてミリ秒を使用します。実行時間には、I/Oの所要時間および次の文の待機時間は含まれません。
例
例10-154 TRCAKPRGを使用したタイミング・データの収集
この例では、mybjt
プログラムとそのプログラムがコールするすべてのプログラムのタイミング・データが、mybjttim.dat
というファイルに収集されます。
TRACKPRG ON mybjt TRACKPRG OFF TRACKPRG FILE mybjttim.dat TRACKPRG INIT TRACKREPORT mybjttim.dat
例10-155 INITキーワードおよびTRACKREPORTの使用
この例では、トラッキングをオンにしてprog1
の実行に関するタイミング・データを収集し、データをprog1.trk
という名前のファイルに送信します。その後、INITキーワードを使用して既存のトラッキング・リストを廃棄し、2番目のプログラムのデータを収集してファイルに送信できるようにします。過程の全体で、トラッキングはオンのままです。最後に、トラッキングをオフにし、INITキーワードを使用してトラッキング・リストで使用されていたメモリーを解放した後、TRACKREPORT
プログラムをコールして2つのファイルに格納されたデータから生成された2つのレポートを出力します。
TRACKPRG ON prog1 TRACKPRG FILE prog1.trk TRACKPRG INIT prog2 TRACKPRG FILE prog2.trk TRACKPRG OFF TRACKPRG INIT TRACKREPORT prog1.trk TRACKREPORT prog2.trk