调查并解决超时情况

超时情况可能由多种原因造成,包括与 Db2 或 IRLM 相关的因素。

过程

调查并解决超时情况:

  1. 在 SYSIBM.SYSTABLESPACE 中查看LOCKRULE列的值,以了解正在访问的表空间。
    TABLE或TABLESPACE的锁大小可能会导致超时。 如果您的应用程序不需要锁定整个表或表空间,您可以通过将锁定大小更改为PAGE或ANY来解决超时问题。
  2. 更改开始FL 507 检查安装 Db2 时设置的子系统参数“每张桌子(空间)的锁数量”。 如果设置了 SYSIBMADM.MAX_LOCKS_PER_TABLESPACE 内置全局变量,则其值将覆盖子系统参数的值,并控制应用程序在表空间中可同时持有的最大锁数,直到发生锁升级。
    如果获取并持有许多页面或行锁,那么LOCKS PER TABLE(SPACE)的值过小可能会导致锁升级。 您可以通过更改DSNTIPK更新面板上的值或指定RELEASE(COMMIT)绑定选项并更频繁地提交更改来解决超时问题。
    更改结束
  3. 检查SQL语句失败时的EXPLAIN输出,并检查每个表或表空间中 PLAN_TABLE.TSLOCKMODE 列的值。
    如果正在运行的程序试图获取不兼容的锁,您可以通过顺序而非同时运行这些程序来解决超时问题。 您也可以通过更改锁的尺寸和以下绑定选项来解决这个问题: 释放和隔离
  4. 请查看应用程序的发布绑定选项。
    与RELEASE(DEALLOCATE)绑定会导致分区、表、表空间和DBD锁的保持时间比与RELEASE(COMMIT)绑定更长,从而可能导致超时。
  5. 在程序执行期间发出显示数据库命令并指定LOCKS关键字。 通过这样做,您可以验证超时发生时只有预期的锁被保持。 如果意外锁住了,您也可以通过更改锁尺寸和以下绑定选项来解决这个问题: 释放和隔离
  6. 检查应用程序的隔离绑定选项。
    隔离级别会影响是否获取锁以及锁的保持时间。
  7. 如果故障是由未检测到的死锁引起的,请延长等待时间。
    例如,代理商可能占用资源的时间超过了规定的时间或 IRLM 默认等待时间。

    如果时间限制过短,您可以通过指定新的 IRLM 锁定资源等待时间限制来延长限制。 您可以采取以下操作进行更改:

    • 在DSNTIJUZ作业流中,使用 DSN6SPRM 汇编器宏中的参数
    • 更新 Db2 安装 IMS 资源锁定管理器面板中的“等待时间”字段,即IRLMRWT。

    您还必须指定此CSECT版本中包含的所有其他参数。 然后采取以下措施之一:

    • 重新提交安装作业 DSNTIJUZ,链接编辑 SYSIN 文件 'NAME' 参数,使其与 -START DB2 'PARM='参数。
    • 重新安装 DSN6SPRM 并重新链接-编辑DSNZPARM,方法是重新提交安装作业DSNTIJUZ。 链接编辑SYSIN文件中的“NAME”参数必须与-START DB2 'PARM='参数。