9.5方法:
#首先设置参数,并创建事件监控器
db2set DB2_CAPTURE_LOCKTIMEOUT=ON
db2 update db cfg for sample using locktimeout=15
db2stop force
db2start
db2 connect to sample
mkdir locks
db2 drop event monitor dlockevm
db2 "create event monitor dlockevm for deadlocks with details history write to file '/home2inst1/locks'"
db2 set event monitor dlockevm state=1
#模拟锁超时
在第一个窗口中执行
db2 +c "insert into t1 values('ffff','ffff')"
db2 +c "select * from t1 where coll='ffff'"
在第二个窗口中执行
db2 +c "select * from t1 where coll='xxxx'"
sql0911n the current transaction has been rooled back because of a deadlock or timeout.Reason code "68".sqlstate=40001
添加新评论4 条评论
2012-08-11 14:23
db2pd -d dbname -lock -wait会得到一个事物句柄
db2pd -d dbname -tra 事物句柄
会得到一个应用程序id
2012-08-11 14:23
就可以看到是哪个语句造成的了
2012-08-11 14:22
2012-08-11 14:22
#首先设置参数,并创建事件监控器
db2set DB2_CAPTURE_LOCKTIMEOUT=ON
db2 update db cfg for sample using locktimeout=15
db2stop force
db2start
db2 connect to sample
mkdir locks
db2 drop event monitor dlockevm
db2 "create event monitor dlockevm for deadlocks with details history write to file '/home2inst1/locks'"
db2 set event monitor dlockevm state=1
#模拟锁超时
在第一个窗口中执行
db2 +c "insert into t1 values('ffff','ffff')"
db2 +c "select * from t1 where coll='ffff'"
在第二个窗口中执行
db2 +c "select * from t1 where coll='xxxx'"
sql0911n the current transaction has been rooled back because of a deadlock or timeout.Reason code "68".sqlstate=40001
这时检查<instance_home>/sqllib2dump目录,发现生成了db2locktimeout.0.72****
这个文件包含两部分内容
一部分为锁请求相关信息,包含了锁超时的语句,申请的锁类型等。
另一部分为锁拥有者相关信息,包含了当前锁的模式,还包含当前事务所执行的所有sql语句历史信息。
以上是我的阅读笔记 仅供参考