EXPLAIN 绑定选项

EXPLAIN选项使绑定过程能够获取有关包中SQL语句如何执行的信息。

开始特定程序编程接口信息。

命令选项 选项价值 搭配
EXPLAIN
注:
  1. 更改开始 高级触发器的 REBIND PACKAGE不支持 EXPLAIN(ONLY) 选项。更改结束
  2. 更改开始对于原生REST服务的绑定服务或重新绑定包, EXPLAIN(ONLY) 选项无效。更改结束

绑定过程会将这些信息插入表所有者.PLAN_TABLE中。 所有者可以是计划或套餐所有者的授权ID。 或者,计划或套餐所有者的授权ID可以有一个别名, 例如owner.PLAN_TABLE ,指向基础表PLAN_TABLE。 所有者还必须对该表拥有适当的 SELECT 和 INSERT 权限。 此选项不会获取访问远程对象的语句的信息。

PLAN_TABLE必须有一个基本表,并且可以有多个别名,这些别名具有相同的表名PLAN_TABLE,但使用不同的授权ID;它不能是视图或同义词。 它应该在装订过程开始之前就存在。

EXPLAIN选项还会填充所有解释表,但以下情况除外:

  • 查询表
  • dsn_statement_cache_table(缓存表

通过在程序中嵌入SQL语句EXPLAIN,您可以获得EXPLAIN输出,该语句嵌入在绑定EXPLAIN(NO)的程序中。 否则,EXPLAIN选项适用于程序中所有可解释的SQL语句,以及任何DECLARE CURSOR语句中的fullselect部分。

在所有插入到 owner.PLAN_TABLE 中的QUERYNO的值是预编译器分配并放置在DBRM中的语句编号。

自动重新绑定 :如果您使用EXPLAIN(YES)绑定计划或包,并且安装面板DSNTIPO上的EXPLAIN PROCESSING字段值为YES,则EXPLAIN(YES)生效。 如果EXPLAIN(YES)和VALIDATE(BIND)生效,而PLAN_TABLE不正确,则自动重新绑定将失败。
EXPLAIN( NO )
不提供解释信息。
EXPLAIN(YES)
在EXPLAIN填充的表格中插入信息。 绑定操作期间不会检查车主授权ID的二次授权。 您必须将所有权限和授权直接授予车主授权ID。 如果在绑定时 owner.PLAN_TABLE 不存在,则绑定操作是否成功取决于选项VALIDATE的值。
  • 如果值为BIND,则绑定失败。
  • 如果值为RUN, Db2 将在运行时再次检查表是否存在。 如果计划或方案不存在,则无法运行。 如果确实存在, Db2 会在计划或程序包运行前将信息插入PLAN_TABLE。

如果可选表DSN_FUNCTION_TABLE或DSN_STATEMNT_TABLE都不存在或两者都存在,或者如果它们定义不正确,绑定不会失败。

EXPLAIN(ONLY)
更改开始在EXPLAIN填充的表格中插入信息。 当指定EXPLAIN(ONLY)时, Db2 不会在目录表 SYSIBM.SYSPACKAGE 中插入新行或更新行,也不会在目录中永久插入或更新软件包。 但是,当指定EXPLAIN(ONLY)时, Db2 会使用常规BIND或REBIND使用的所有资源。 例如,在EXPLAIN(ONLY)处理期间, Db2 获取的锁与常规BIND或REBIND处理期间获取的锁相同。更改结束

当绑定或重新绑定的授权ID没有权限执行程序包中的语句时,EXPLAIN(ONLY)允许EXPLAIN运行。 如果指定EXPLAIN(ONLY)的命令引用了已经存在的程序包和版本,则即使指定了ACTION(REPLACE),也不会删除或替换现有程序包。 如果在填充EXPLAIN表时遇到错误,则不会将信息添加到发生错误的语句的EXPLAIN表中,也不会添加到任何后续语句的EXPLAIN表中。

EXPLAIN(ONLY)选项在您使用APREUSE(ERROR)或APCOMPARE(ERROR)绑定选项绑定或重新绑定包之前,对于测试访问路径是否可以成功重用也很有用。 当EXPLAIN(ONLY)与这些选项一起使用时,PLAN_TABLE中会填充有关包中所有语句的信息,即使一个或多个语句的访问路径无法重用或比较。 您可以查看HINT_USED和REMARKS列,找出程序包中哪些语句无法重复使用。 当访问路径重用失败时,PLAN_TABLE数据为语句描述的访问路径描述了当没有指定重用或APREUSE(WARN)时, Db2 选择的新访问路径。

BIND_EXPLAIN_ONLY列中的“Y”值表示在此选项下创建的PLAN_TABLE行。

更改开始 高级触发器的 REBIND PACKAGE不支持 EXPLAIN(ONLY) 选项。更改结束

更改开始对于原生REST服务的绑定服务或重新绑定包, EXPLAIN(ONLY) 选项无效。更改结束

重新装订失败导致的失效

如果重新绑定失败,返回代码大于4,则重新绑定对象无效,并回滚对该对象的所有更改,使其恢复到重新绑定尝试之前的状态。 然而,如果重新绑定失败是因为重新绑定选项EXPLAIN或SQL语句EXPLAIN(即PLAN_TABLE不存在或创建不正确),则 Db2 会回滚对该对象的所有更改,但不会使该对象无效。

默认值 EXPLAIN

进程 缺省值
绑定服务
绑定计划
绑定程序包
重新绑定计划
重新绑定程序包 现有值

目录记录 EXPLAIN

请参阅SYSPACKAGE目录表SYSPLAN目录表中的EXPLAIN列。

结束特定程序编程接口信息。