您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

M_ACTIVE_PROCEDURES

视图 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。

限制:

  • 不支持触发器和功能。

  • 不监控 EAPI 层以外的信息(但可能包含在总编译时间或执行时间中)。

    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 中保留的时间。

    可能有以下选项:

  • 设置两个参数:M_ACTIVE_PROCEDURES 表在指定时间内保留指定的记录数。

  • 仅设置 NUMBER_OF_CALLS_TO_RETAIN_AFTER_EXECUTION:M_ACTIVE_PROCEDURES 表保留指定的调用次数,缺省保留期为 3600 秒。NUMBER_OF_CALLS_TO_RETAIN_AFTER_EXECUTION 的最大允许值为 10,000。如果设置的值超过此限制,则将自动上限为 10,000。

  • 仅设置 RETENTION_PERIOD_FOR_SQLSCRIPT_CONTEXT:M_ACTIVE_PROCEDURES 表在指定保留期内保留默认的 100 条记录。RETENTION_PERIOD_FOR_SQLSCRIPT_CONTEXT 允许的最大值为 86,400 秒。如果设置的值超过此限制,该值将自动上限为 86,400 秒。

  • 两个参数均未设置:M_ACTIVE_PROCEDURES 不保留任何记录。

    备注所有配置参数都需要在 sqlscript 部分中定义。