将 XML 文档中的指标监视元素作为表行来查看
要查看从事件监视器返回的 XML 文档中包含的与指标相关的信息,其中一种方法是将它转换为以下格式:让每个监视元素单独占用一行。
如果您希望采用基于文本的格式来查看信息,但是具体又不知道要检查哪些监视元素,那么采用此格式就很有用。
关于此任务
过程
对于程序包高速缓存事件监视器所跟踪的语句,此任务中所显示的示例使用 MON_FORMAT_XML_TIMES_BY_ROW 表函数来查看该语句的组件时间。它假定已经创建并激活了一个称为 PKGCACHEEVENTS 的程序包高速缓存事件监视器。程序包高速缓存事件监视器将它的输出写入无格式的事件 (UE) 表。在可以使用 UE 表之前,必须使用 EVMON_FORMAT_UE_TO_TABLES 存储过程将此 UE 表中的数据转换为关系表,或者使用 EVMON_FORMAT_UE_TO_XML 表函数将它转换为 XML。此任务说明了这两种方法中的第一种方法。
结果
示例
- 查看由 MON_GET_*_DETAILS 表函数生成的 DETAILS 列的内容
还可以使用 MON_FORMAT_XML_*_BY_ROW 函数来查看由任何 MON_GET_*_DETAILS 函数返回的 DETAILS 列的内容。例如,MON_GET_CONNECTION_DETAILS 将返回一个 DETAILS 列,此列中包含一个 XML 文档,而此 XML 文档中具有与数据库连接有关的指标。
例如,要查看所有成员中每个连接的非零组件时间,可以使用下列查询: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 本身也会包括在结果中,total_rqst_time 包括若干个单独的组件时间。 - 为了便于说明,包括了由 MON_FORMAT_XML_COMPONENT_TIMES_BY_ROW 返回的其中一列 PARENT_METRIC_NAME。
上述查询将返回下列结果:
如此示例所示,将只包括组成 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_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 的指标 (