MON_GET_ROUTINE_EXEC_LIST 表函数 - 获取例程所执行的语句列表
MON_GET_ROUTINE_EXEC_LIST 表函数返回自激活数据库以来每个过程,外部函数,编译函数,编译触发器和调用的匿名块所执行的所有语句 (节) 的列表。
权限
- 对例程的 EXECUTE 特权
- DATAACCESS 权限
- SQLADM 权限
- DBADM 权限
缺省 PUBLIC 特权
无
语法
模式为 SYSPROC。
例程参数
- routine_type
- 类型为 CHAR (2) 的输入参数,用于指定要为其返回数据的例程或编译触发器的类型:
- "P" 表示程序
- "SP" 表示过程的特定名称
- "F" 表示已编译的函数
- "SF" 表示已编译函数的特定名称
- "T" 表示已编译的触发器
- "C" 表示 SQL PL 中动态预编译的复合 SQL 语句或 PL/SQL 中的匿名块
如果例程类型为空字符串, NULL 或空白,那么将返回所有类型的所有例程。
- routine_schema
- 类型为 VARCHAR (128) 的输入参数,用于指定例程或触发器的模式。 对于动态准备的复合 SQL 语句或匿名块,可以使用 MON_GET_SECTION_ROUTINES 表函数来确定模式。 使用 NULL 或空字符串来返回所有模式中的例程和触发器。 此参数区分大小写。
- routine_module_name
- 类型为 VARCHAR (128) 的输入参数,用于指定输入例程的模块名称 (如果适用)。 使用 NULL 或空字符串返回所有模块中的例程。 此参数区分大小写。
- routine_name
- 类型为 VARCHAR (128) 的输入参数,用于指定例程的名称。 如果输入参数为 "SP" 或 "SF" ,那么必须提供例程的特定名称。 对于动态准备的复合 SQL 语句或匿名块,可以使用 MON_GET_SECTION_ROUTINES 表函数来确定名称。 使用 NULL 或空字符串返回与其他输入参数匹配的所有例程。 此参数区分大小写。
- 成员
- 类型为 INTEGER 的输入参数,用于在调用此函数时指定与当前连接的数据库相同的实例中的有效成员。 指定 -1(表示当前数据库成员)或 -2(表示所有活动数据库成员)。 如果指定了 NULL 值,那么将隐式设置 -1。
返回的信息
列名 | 数据类型 | 描述或相应的监视元素 |
---|---|---|
ROUTINE_TYPE | CHAR(1) | routine_type -“例程类型”监视元素 |
ROUTINE_SCHEMA | VARCHAR(128) | routine_schema -“例程模式”监视元素 |
routine_module_name | VARCHAR(128) | routine_module_name -“例程模块名”监视元素 |
routine_name | VARCHAR(128) | routine_name -“例程名称”监视元素 |
SPECIFIC_NAME | VARCHAR(128) | specific_name -“特定名称”监视元素 |
dyn_compound_exec_id | VARCHAR(32) FOR BIT DATA | dyn_compound_exec_id -“动态复合语句可执行标识”监视元素 |
MEMBER | SMALLINT | member -“数据库成员”监视元素 |
ROUTINE_ID | INTEGER | routine_id -“例程标识”监视元素 |
subroutine_id | INTEGER | subroutine_id -“子例程标识”监视元素 |
lib_id | BIGINT | lib_id -“库标识”监视元素 |
SECTION_TYPE | CHAR(1) | section_type-节类型指示符 。 |
PACKAGE_SCHEMA | VARCHAR(128) | package_schema-程序包模式 。 |
PACKAGE_NAME | VARCHAR(128) | package_name-包名 。 |
PACKAGE_VERSION_ID | VARCHAR(64) | package_version_id-程序包版本标识 。 |
SECTION_NUMBER | BIGINT | section_number-节号 。 |
STMTNO | INTEGER | stmtno -“语句号”监视元素 |
EXECUTABLE_ID | VARCHAR(32) FOR BIT DATA | executable_id-可执行文件标识 。 |
NUM_ROUTINES | INTEGER | num_routines - 例程数 |
call_stmt_routine_id | INTEGER | call_stmt_routine_id -“调用语句例程标识”监视元素 |
call_stmt_subroutine_id | INTEGER | call_stmt_subroutine_id -“调用语句子例程标识”监视元素 |
NUM_EXECUTIONS | BIGINT | num_间执行-语句执行数 。 |
NUM_EXEC_WITH_METRICS | BIGINT | num_exec_with_metrics-收集度量的执行次数 。 |
NUM_COORD_EXEC | BIGINT | num_coord_exec-协调程序代理程序执行的次数 。 |
NUM_COORD_EXEC_WITH_METRICS | BIGINT | num_coord_exec_with_metrics-协调代理程序使用度量值执行的次数 。 |
COORD_STMT_EXEC_TIME | BIGINT | coord_stmt_exec_time - 协调代理程序执行语句的时间 |
TOTAL_ACT_TIME | BIGINT | total_act_time - 活动总时间 |
TOTAL_ACT_WAIT_TIME | BIGINT | total_act_wait_time - 活动等待总时间 |
LOCK_WAIT_TIME | BIGINT | lock_wait_time - 等待锁定时间 |
LOCK_WAITS | BIGINT | lock_waits - 等待锁定次数 |
POST_THRESHOLD_SORTS | BIGINT | post_threshold_sorts - 后阈值排序数 |
POST_SHRTHRESHOLD_SORTS | BIGINT | post_shrthreshold_sorts - 后共享阈值排序数 |
ROWS_READ | BIGINT | rows_read - 读取行数 |
SORT_OVERFLOWS | BIGINT | sort_overflows - 排序溢出数 |
TOTAL_CPU_TIME | BIGINT | total_cpu_time - CPU 总时间 |
TOTAL_SORTS | BIGINT | total_sorts - 排序总数 |
使用说明
MON_GET_ROUTINE_EXEC_LIST 表函数针对例程或触发器执行的每个唯一语句 (部分) 返回一行。 此函数还会返回在例程或触发器中该语句的所有执行中聚集的一组度量。 不会跨成员执行聚集。 但是,可以通过 SQL 查询在成员之间进行聚集 (如 "示例" 部分中所示)。
聚集度量值不包含任何子语句的度量值。 例如,如果 CALL 语句由例程执行,那么 MON_GET_ROUTINE_EXEC_LIST 中针对 CALL 语句返回的指标不包含由 CALL 调用的其他语句执行的任何工作的指标。 唯一的例外是 coord_stmt_exec_time
监视元素,它返回语句的耗用时间,因此会隐式捕获子语句中所耗用的任何时间。
必须使用 mon_rtn_data
和 mon_rtn_execlist
数据库配置参数显式启用例程监视数据收集和语句监视。 如果禁用了这些配置参数,那么不会返回任何信息。
此表函数返回的计数器和耗用时间监视元素通过针对工作负载的 COLLECT ACTIVITY METRICS 子句以及数据库级别的 mon_act_metrics
数据库配置参数进行控制。 如果这两个控件都未启用,那么所报告的计数器和耗用时间监视元素为 0。
从程序包高速缓存中清除动态准备的复合 SQL 语句或匿名块的程序包时, MON_GET_ROUTINE_EXEC_LIST 函数不再报告此语句的信息。 同样,当删除例程或触发器时,不再报告有关例程或触发器的信息。
将从内存中修剪随后删除或在前一个 24 小时期间未执行的例程所执行的语句,并且不返回这些语句。
示例
- 列出函数 TEST.X。
返回:SELECT SUBSTR(P.STMT_TEXT,1,45) AS TEXT FROM TABLE(MON_GET_ROUTINE_EXEC_LIST('F', 'TEST', NULL, 'X', -1)) AS T, TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-1)) AS P WHERE T.EXECUTABLE_ID = P.EXECUTABLE_ID
TEXT --------------------------------------------- WITH PID_VALUES (WIDEBAND,ENGN_TEMP) AS SEL insert into GSO_LOGS values(8.7, 145, 1.406) call SYSIBMSUBROUTINE.TEST_66613_1157394573() 3 record(s) selected.
- 列示过程 TEST.PROC1 (按它们所耗用的协调程序语句执行时间的百分比)。
返回:SELECT 100*B.COORD_STMT_EXEC_TIME / A.TOTAL_ROUTINE_COORD_EXEC_TIME AS PERCENT_EXEC_TIME, SUBSTR(C.STMT_TEXT,1,45) AS STMT_TEXT FROM TABLE(MON_GET_ROUTINE('SP',NULL,NULL,'PROC1', -1)) AS A, TABLE(MON_GET_ROUTINE_EXEC_LIST('SP',NULL,NULL,'PROC1', -1)) AS B, TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-1)) AS C WHERE B.EXECUTABLE_ID = C.EXECUTABLE_ID ORDER BY B.COORD_STMT_EXEC_TIME DESC
PERCENT_EXEC_TIME STMT_TEXT ------------------ --------------------------------------------- 10 SELECT WAFR, MPHX64, ENGN_RPM FROM KB28_LOGS 3 SELECT ( ENGN_TQ * ENGN_RPM )/5252 AS HP FRO 2 record(s) selected.