作者:ndo2205188 | 来源:互联网 | 2023-08-10 10:40
回顾 DB2 9.1 中的锁定超时分析
使用 db2pd
工具和 db2cos
脚本进行锁定超时分析的方法包含以下几步:
- 使用一个特殊的 DB2 脚本 — 名为
db2cos
— 在每次调用 db2cos
脚本时执行一个 db2pd
调用。db2pd
调用收集与锁定、事务、应用程序、语句缓存相关的信息,并将信息存储在一个文本文件中以供分析。
- 要在锁定超时发生时自动执行
db2cos
脚本(以及包含的 db2pd
命令,需要使用 db2pdcfg
命令注册锁定超时事件。
- 在锁定超时事件中,DBA 可以检查通过自动调用
db2cos
脚本生成的 db2pd
输出。这使 DBA 能够确定发生锁定争用的原因,从而设法在以后避免发生这类情形。
要通过一个示例场景了解详细的步骤说明,请参阅 参考资料 部分中刚刚提到的文章。
尽管其中介绍的方法提供了大量信息,使得锁定超时分析比以前的 DB2 9 for Linux, Unix, and Windows 版本更加简单,但它仍然存在一些不足:
- 使用此方法需要手动改写
db2cos
脚本并通过调用 db2pdcfg
来注册锁定超时事件。两个步骤都不复杂,但是对于新手来说可能有些困难。
- 解释
db2pd
输出以识别锁定超时情形中涉及的应用程序和 SQL 语句,这个任务并不容易,而且需要一些尝试。
- 如果锁定超时是由包含多个 SQL 命令的事务引起的,那么
db2pd
收集的信息可能还不足以确定导致锁定的 SQL 语句。
DB2 9.5 中全新的锁定超时报告功能
在 DB2 9.5 的锁定超时报告功能中,引入了一个新特性,使得锁定超时分析变得非常简单。要激活锁定超时报告,只需将 DB2 注册变量 DB2_CAPTURE_LOCKTIMEOUT
设置为 ON
,并重新启动您的 DB2 实例:
清单 1. 激活 DB2 9.5 中的锁定超时报告
db2set DB2_CAPTURE_LOCKTIMEOUT=ON db2stop db2start |
是的,就是这么简单。当 DB2_CAPTURE_LOCKTIMEOUT
设置为 ON
时,DB2 为每个锁定超时事件自动创建一个报告文件。报告文件保存在 DIAGPATH
数据库管理员配置(DBM CFG)参数指向的目录中,包含的信息有:锁定超时的日期和时间、存在问题的锁定、锁定请求程序和锁定拥有者。
那么 DB2 9.5 中就不使用 db2cos
脚本了吗?事实并非如此。将 db2cos
脚本和 db2pd
工具结合具有非常广泛的用途。这意味着,这些工具组合仍然可用于捕捉与 SQL 代码和 DB2 内部返回代码相关的任何 DB2 事件信息,而不仅仅是锁定超时信息。
现在看看新的 DB2 9.5 注册变量 DB2_CAPTURE_LOCKTIMEOUT
并查看一个使用 DB2 SAMPLE 数据库的锁定超时示例场景。如果 SAMPLE 数据库不存在,可以调用下面的命令创建一个:
本文转自IBM Developerworks中国
请点击此处查看全文