视图 M_ACTIVE_PROCEDURES 监控从过程调用开始的所有内部执行的语句。还包括远程执行的语句。
M_ACTIVE_PROCEDURES 与 M_ACTIVE_STATEMENTS 类似,但保留已完成内部语句的记录,直到父过程完成,并按嵌套级别的分层顺序显示它们。M_ACTIVE_PROCEDURES 的结构如下所示:
列名称数据类型描述PROCEDURE_HOSTVARCHAR(64)过程主机PROCEDURE_PORT整数过程内部端口PROCEDURE_SCHEMA_NAMENVARCHAR(256)存储过程的模式名称PROCEDURE_NAMENVARCHAR(256)存储过程的名称PROCEDURE_CONNECTION_ID整数过程连接 IDPROCEDURE_TRANSACTION_ID整数过程事务标识STATEMENT_IDVARCHAR(20)语句的逻辑标识STATEMENT_STRINGNCLOBSQL 语句STATEMENT_PARAMETERSNCLOB语句参数STATEMENT_STATUSVARCHAR(16)语句状态:EXECUTING:语句仍在运行COMPLETED:语句已完成COMPILING:将编译语句ABORTED:语句已中止STATEMENT_EXECUTION_COUNT整数语句执行计数STATEMENT_DEPTH整数语句深度STATEMENT_COMPILE_TIMEBIGINT编译语句所用的时间(微秒)STATEMENT_EXECUTION_TIMEBIGINT执行语句的占用时间(微秒)STATEMENT_START_TIME时戳语句开始时间STATEMENT_END_TIME时戳语句结束时间STATEMENT_CONNECTION_ID整数语句的连接 IDSTATEMENT_TRANSACTION_ID整数语句的事务 IDSTATEMENT_MATERIALIZATION_TIMEBIGINT指定 ITAB 实现时间。STATEMENT_MATERIALIZATION_MEMORY_SIZEBIGINT指定 ITAB 实现的内存大小。STATEMENT_EXECUTION_MEMORY_SIZEBIGINT显示用于执行语句的峰值内存(以字节为单位)。在分布式执行的情况下,它是多个服务器的本地峰值内存的总和。备注缺省情况下,此列显示 '-1'。您需要执行以下配置以启用统计。global.ini: ('resource_tracking', 'enable_tracking') = 'true’global.ini: ('resource_tracking', 'memory_tracking') = 'true'仅在执行完成后填充值。在执行期间,将显示 -1。
M_ACTIVE_PROCEDURES 还有助于分析长时间运行的过程并确定其当前状态。您可以从另一个会话运行以下查询,以了解有关过程状态的更多信息,如示例中的 MY_SCHEMA.MY_PROC:
select * from M_ACTIVE_PROCEDURES where procedure_name = ‘my_proc’ and procedure_schema_name = ‘my_schema’;还有一个 INI 配置 monitoring_level 用于控制监控级别的粒度:
级别描述0禁用分析信息,例如 STATEMENT_START_TIME 和 STATEMENT_END_TIME。1默认模式。启用分析信息,但仍禁用 STATEMENT_PARAMTER 值的收集。2监控视图的完整信息
为防止不相关数据的内存泛滥,记录数会受到限制。如果记录计数超过给定阈值,则删除第一个记录,而不考虑其状态。限制可以调整 INI 参数 execution_monitoring_limit,例如 execution_monitoring_limit = 100 000。
限制:
M_ACTIVE_PROCEDURES 的缺省行为是保留已完成内部语句的记录,直到父过程完成。可以使用以下两个配置参数更改此行为:NUMBER_OF_CALLS_TO_RETAIN_AFTER_EXECUTION 和 RETENTION_PERIOD_FOR_SQLSCRIPT_CONTEXT.
通过 NUMBER_OF_CALLS_TO_RETAIN_AFTER_EXECUTION,您可以指定执行后保留的调用数,RETENTION_PERIOD_FOR_SQLSCRIPT_CONTEXT 定义结果应在 M_ACTIVE_PROCEDURES 中保留的时间。
可能有以下选项:
备注所有配置参数都需要在 sqlscript 部分中定义。