示例:列出匿名块的聚集例程指标

可以使用例程监视功能来列出匿名块所执行语句的聚集指标。

方案

在本示例中,数据库管理员 (DBA) 想要查看含有语句文本“BEGIN ... END”的匿名块所执行的所有语句的聚集指标。DBA 发出下列查询,在程序包高速缓存中查找匿名块的 executable_id
SELECT EXECUTABLE_ID 
   FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL,NULL,-1)) AS T 
   WHERE STMT_TEXT = 'BEGIN BLAH BLAH END'
返回的结果是:
EXECUTABLE_ID                                               
-------------------------------------------------------------------
x'01000000000000007A0000000000000000000000020020120801153841789993'

  1 record(s) selected.
使用返回的 executable_id,DBA 发出下列查询以查找匿名块的聚集指标:
SELECT * FROM TABLE(MON_GET_ROUTINE('A', NULL,NULL,NULL,-2)) AS T 
   WHERE DYN_COMPOUND_EXEC_ID =  x'01000000000000007A0000000000000000000000020020120801153841789993'
返回的结果是:
ROUTINETYPE ROUTINESCHEMA   ROUTINEMODULENAME  ROUTINENAME                 SPECIFICNAME         DYN_COMPOUND_EXEC_ID                                               
----------- --------------- ------------------ --------------------------- -------------------- -------------------------------------------------------------------
C           SYSIBMINTERNAL  -                  COMPILED_ANON_BLOCK_INVOKE  SQL120801153841490   x'01000000000000007A0000000000000000000000020020120801153841789993'

  1 record(s) selected.

此外,DBA 可以使用 MON_GET_SECTION_ROUTINE 表函数来查找对应于匿名块的内部过程和模式名,然后将那些值作为输入传递至 MON_GET_ROUTINE 表函数。此方法将仅返回匿名块的信息,因此避免使用 WHERE 子句来过滤输出。