分析 DB2 for Linux, UNIX, and Windows 中的锁等待情形
2008-10-07 16:16:32 来源:WEB开发网DB2 9 包含了一种新的机制,用于在数据库出现故障或发生事件时收集监视器数据:db2cos 脚本。为了捕捉锁超时事件,可以配置数据库,使之每当出现锁超时时启动 db2cos 脚本。在 db2cos 脚本中,和前面讨论的一样,可以以相同的选项调用 db2pd。我们来看一个示例场景,该场景演示了如何用 db2cos 脚本捕捉锁超时。
对于这个场景,假设 DBA 将数据库锁超时值设为 10 秒:
清单 14. 更新锁超时设置
UPDATE DB CFG FOR SAMPLE USING LOCKTIMEOUT 10
为了每当出现锁超时时启动 db2cos 脚本,DBA 调用 db2pdcfg 实用程序,如下所示:
清单 15. 使用 db2pdcfg 配置 db2cos 脚本的调用
db2pdcfg -catch locktimeout count=1
-catch 选项指定应该自动导致调用 db2cos 脚本的故障或事件。对于锁超时事件,可以指定字符串 locktimeout。或者,可以指定与锁超时相应的 SQL 错误码和原因码:
清单 16. 用于捕捉锁超时的另一种 db2pdcfg 调用
db2pdcfg -catch 911,68 count=1
除了一些字符串值和 SQL 代码之外,db2pdcfg 还接受内部 DB2 错误码。所以,用这种方式可以捕捉很多数据库故障和事件。锁超时事件只是使用 db2pdcfg 和 db2cos 的一个例子。
如果 count 子选项的值为 1,则表明当出现锁超时事件时应该执行 db2cos 脚本。
db2pdcfg 通过以下输出确认错误捕捉的设置:
清单 17. db2pdcfg 对错误捕捉设置的确认
Error Catch #1
Sqlcode: 0
ReasonCode: 0
ZRC: -2146435004
ECF: 0
Component ID: 0
LockName: Not Set
LockType: Not Set
Current Count: 0
Max Count: 1
Bitmap: 0x4A1
Action: Error code catch flag enabled
Action: Execute sqllib/db2cos callout script
Action: Produce stack trace in db2diag.log
更多精彩
赞助商链接