如何通过snapshot来查询什么sql语句导致锁等待的
db2 get snapshot for locks on testdb---------------------------------------------------
查到有锁等待现象,
那如何通过snapshot来查询什么sql语句导致锁等待的?
---------------------------------------------
就像用db2pd -db testdb -locks wait showlocks -applications -transcations - dyn查出来一样。 可以通过db2pd来查询,这个命令的具体用法在网上搜吧。 可以通过db2pd来查询,这个命令的具体用法在网上搜吧。
hooboor 发表于 2010-04-27 14:09 http://bbs.chinaunix.net/images/common/back.gif
这种方法在我的问题里已说过了,可以用,我直想问一下如何用snapshot来查sql语句 不好意思没注意看到下面的语句,快照的话可以用:
db2 get snapshot for dynamic SQL on dbname 不好意思没注意看到下面的语句,快照的话可以用:
db2 get snapshot for dynamic SQL on dbname
hooboor 发表于 2010-04-27 14:23 http://bbs.chinaunix.net/images/common/back.gif
语句到是取到了多少,但到底是哪个语句出现问题?哪个语句是导致锁等待的呢? 不好意思没注意看到下面的语句,快照的话可以用:
db2 get snapshot for dynamic SQL on dbname 你可以用grep过滤下lock相关的信息看看。 你可以用grep过滤下lock相关的信息看看。
hooboor 发表于 2010-04-27 14:51 http://bbs.chinaunix.net/images/common/back.gif
同样查不到
/home/db2inst1>db2 +c "insert into aa values('rich')"
DB20000IThe SQL command completed successfully.
/home/db2inst1>
另一个窗口
/home/db2inst1>db2s
Database Connection Information
Database server = DB2/LINUX 8.2.9
SQL authorization ID = DB2INST1
Local database alias = TESTDB
/home/db2inst1>cx aa
Database Connection Information
Database server = DB2/LINUX 8.2.9
SQL authorization ID = DB2INST1
Local database alias = TESTDB
----------------------------------------------------------------
/home/db2inst1>db2 get monitor switches
Monitor Recording Switches
Switch list for db partition number 0
Buffer Pool Activity Information(BUFFERPOOL) = OFF
Lock Information (LOCK) = ON2010-04-27 10:13:04.558058
Sorting Information (SORT) = OFF
SQL Statement Information (STATEMENT) = ON2010-04-27 10:13:29.307992
Table Activity Information (TABLE) = OFF
Take Timestamp Information (TIMESTAMP) = ON2010-04-27 06:27:02.632310
Unit of Work Information (UOW) = OFF
db2 get snapshot for dynamic sql on testdb|grep -i lock
没有记录 看你的参数应该是没问题的,如果没有相关的语句,那应该是没有锁等待吧。对于V9以上版本,你也可以看查这个视图:sysibmadm.snaplockwait 传统的做法:
db2 "list applications show detail"|grep -vE "UOW Waiting|Connect Completed"
找出处于lock waiting的进程
db2 "get snapshot for application agentid <lock waiting的agentid>"
在输出的最后可以看到锁等待的情况,包括等待的锁资源和锁住该锁资源的进程
再db2 "get snapshot for application agentid <lock资源的agentid>"就可以看到锁住资源的sql语句
在多层锁等待的情况下需要循环上面的做法
页:
[1]
2