XML 文書にあるメトリック・モニター・エレメントを表の行として表示する
イベント・モニターから返された XML 文書に含まれるメトリック関連の情報を表示する方法の 1 つに、各モニター・エレメントが単独の行で表示されるフォーマットに情報を変換するという方法があります。
このフォーマットは、テキスト・ベースのフォーマットで情報を表示したいが、調べるモニター・エレメントが具体的に分かっていない場合に便利です。
このタスクについて
手順
このタスクで示す例では、MON_FORMAT_XML_TIMES_BY_ROW 表関数を使用して、パッケージ・キャッシュ・イベント・モニターによって追跡されたステートメントのコンポーネント時間を表示します。 PKGCACHEEVENTS というパッケージ・キャッシュ・イベント・モニターを作成済みであり、活動化されているとします。パッケージ・キャッシュ・イベント・モニターは、その出力を未フォーマット・イベント (UE) 表に書き込みます。この出力情報を使用するには、UE 表のデータを EVMON_FORMAT_UE_TO_TABLES ストアード・プロシージャーを使用してリレーショナル表に変換するか、または EVMON_FORMAT_UE_TO_XML 表関数を使用して XML に変換する必要があります。 このタスクでは、2 つのアプローチのうちの最初のアプローチを示します。
タスクの結果
例
- MON_GET_*_DETAILS 表関数によって生成された DETAILS 列の内容を表示する
MON_FORMAT_XML_*_BY_ROW 関数を使用して、MON_GET_*_DETAILS 関数のいずれかが返した DETAILS 列の内容を表示することもできます。 例えば MON_GET_CONNECTION_DETAILS は、データベース接続に関連したメトリックのある XML 文書を含んだ DETAILS 列を返します。
例えば、全メンバーの各接続のゼロ以外のコンポーネント時間を表示するには、次の照会を使用できます。SELECT CONDETAILS.APPLICATION_HANDLE, SUBSTR(XMLMETRICS.METRIC_NAME,1,30) AS METRIC_NAME, SUM(XMLMETRICS.TOTAL_TIME_VALUE) AS TOTAL_TIME_VALUE, SUBSTR(XMLMETRICS.PARENT_METRIC_NAME,1,30) AS PARENT_METRIC_NAME FROM TABLE(MON_GET_CONNECTION_DETAILS(NULL,-1)) AS CONDETAILS, TABLE(MON_FORMAT_XML_COMPONENT_TIMES_BY_ROW(CONDETAILS.DETAILS))AS XMLMETRICS WHERE TOTAL_TIME_VALUE > 0 AND XMLMETRICS.PARENT_METRIC_NAME='TOTAL_RQST_TIME' GROUP BY CONDETAILS.APPLICATION_HANDLE, XMLMETRICS.PARENT_METRIC_NAME, XMLMETRICS.METRIC_NAME ORDER BY CONDETAILS.APPLICATION_HANDLE ASC, TOTAL_TIME_VALUE DESC注 :- 二重カウントをなくすために、total_rqst_time に累積されるメトリックのみを結果に含めています (
WHERE .... XMLMETRICS.PARENT_METRIC_NAME='TOTAL_RQST_TIME')。そうしないと、個別のコンポーネント時間をいくつも含んでいる total_rqst_time 自体が結果に入ってしまうことになります。 - PARENT_METRIC_NAME (MON_FORMAT_XML_COMPONENT_TIMES_BY_ROW が返す列の 1 つ) を使用しているのは、例示が目的です。
この照会は、以下の結果を返します。
この例が示すとおり、total_rqst_time を構成するメトリックのみが含まれています。 仮にAPPLICATION_HANDLE METRIC_NAME TOTAL_TIME_VALUE PARENT_METRIC_NAME -------------------- ------------------------------ -------------------- ------------------------------ 52 TOTAL_SECTION_TIME 3936 TOTAL_RQST_TIME 52 TOTAL_COMPILE_TIME 482 TOTAL_RQST_TIME 52 TOTAL_COMMIT_TIME 15 TOTAL_RQST_TIME 52 TOTAL_ROLLBACK_TIME 1 TOTAL_RQST_TIME 496 TOTAL_COMPILE_TIME 251 TOTAL_RQST_TIME 496 TOTAL_SECTION_TIME 46 TOTAL_RQST_TIME 496 TOTAL_IMPLICIT_COMPILE_TIME 5 TOTAL_RQST_TIME 7 record(s) selected.WHERE .... XMLMETRICS.PARENT_METRIC_NAME='TOTAL_RQST_TIME'節がこの照会に含まれていなかったとすると、結果は次のようなものになります。
この場合は、各接続の total_rqst_time の値が結果に含まれていますが、親であるこの total_rqst_time は、子である他のすべてのエレメントの値を含んでいます。 同様に、イタリック で示した項目の値は total_section_time に累積されています。 これらは、WHERE 節で除外されていなければ、結果で三重カウントされることになります。total_section_time 自体が total_rqst_time に累積されているためです。APPLICATION_HANDLE METRIC_NAME TOTAL_TIME_VALUE PARENT_METRIC_NAME -------------------- ------------------------------ -------------------- ------------------------------ 52 TOTAL_RQST_TIME 4603 - 52 TOTAL_SECTION_TIME 3942 TOTAL_RQST_TIME 52 TOTAL_COMPILE_TIME 537 TOTAL_RQST_TIME 52 TOTAL_SECTION_SORT_TIME 299 TOTAL_SECTION_TIME 52 TOTAL_COMMIT_TIME 15 TOTAL_RQST_TIME 52 TOTAL_ROLLBACK_TIME 1 TOTAL_RQST_TIME 496 TOTAL_RQST_TIME 341 - 496 TOTAL_COMPILE_TIME 251 TOTAL_RQST_TIME 496 TOTAL_SECTION_TIME 46 TOTAL_RQST_TIME 496 TOTAL_IMPLICIT_COMPILE_TIME 5 TOTAL_RQST_TIME 496 TOTAL_SECTION_SORT_TIME 2 TOTAL_SECTION_TIME 11 record(s) selected.- 二重カウントをなくすために、total_rqst_time に累積されるメトリックのみを結果に含めています (