MON_GET_SECTION 表函数-从程序包高速缓存获取节的副本

MON_GET_SECTION 表函数返回程序包高速缓存中动态或静态 SQL 语句部分的副本。 可以保存返回的部分以供将来分析。 例如,当您调查语句的计划更改时,可以将保存的部分作为输入传递到 EXPLAIN_FROM_DATA 存储过程以检查先前的存取方案。

权限

需要下列其中一个权限:
  • 对例程的 EXECUTE 特权
  • DATAACCESS 权限
  • SQLADM 权限
  • DBADM 权限

缺省 PUBLIC 特权

语法

Read syntax diagramSkip visual syntax diagramMON_GET_SECTION(executable_id )

模式为 SYSPROC。

例程参数

executable_id
类型为 VARCHAR (32) FOR BIT DATA 的输入参数,用于指定数据库程序包高速缓存中的唯一部分。

该例程在该部分的所有成员上搜索程序包高速缓存。 对于静态 SQL ,如果该部分不再位于程序包高速缓存中,那么将搜索目录。

如果指定了空值或无效值,那么将返回 SQL0171 。

返回的信息

表 1. MON_GET_SECTION 返回的信息
列名 数据类型 描述
SECTION_TYPE CHAR(1) section_type -“节类型指示器”监视元素
SECTION_ENV BLOB (134 MB) section_env -“节环境”监视元素

示例

使用以下查询从编译环境中检索语句文本,语句标识,计划标识和节信息。 将返回当前在程序包高速缓存中的所有语句的信息。 该信息将插入到名为 REPOSITORY_SECTION 的表中。
INSERT INTO
      REPOSITORY_SECTIONS(STMT_TEXT, STMTID, PLANID,
                          SEMANTIC_ENV_ID, SECTION_DATA)
      SELECT STMT_TEXT, STMTID, PLANID, SEMANTIC_ENV_ID,
      ( SELECT B.SECTION_ENV
        FROM TABLE(MON_GET_SECTION(A.EXECUTABLE_ID)) AS B)
         SECTION_DATA
      FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,NULL,NULL,-2)) AS A
您可以使用此信息来构建已运行的语句的历史记录。 您可以使用 EXPLAIN_FROM_DATA 存储过程,通过将保存的部分传递到存储过程来检查每个保存的语句的存取方案。