查看锁等待的应用
server1:/home/db2inst1$ db2pd -db TXDB -wlocks detail
Locks being waited on :
AppHandl [nod-index] TranHdl Lockname Type Mode Conv Sts CoorEDU AppName AuthID AppID TableNm SchemaNm AppNode
33966 [000-33966] 27 00020004000000000000000452 RowLock ..X G 29281 db2bp DB2INST1 *LOCAL.db2inst1.151127142856 EMPLOYEE DB2INST1 server1
33968 [000-33968] 29 00020004000000000000000452 RowLock ..X W 29538 db2bp DB2INST1 *LOCAL.db2inst1.151127142915 EMPLOYEE DB2INST1 server2
application 33966 持有锁
application 33968 等待锁
下面查看他们在做什么
db2pd -db TXDB -apinfo 33966
db2pd -db TXDB -apinfo 33968
对于正在执行的sql,db2pd -apinfo是可以获取到的,但是刚刚执行过的sql就查不到了
使用下面的命令查看anchid 和stmtuid
server1:/opt/IBM/db2/V10.5/bin$ db2pd -db TXDB -applications 33966 | grep -ip "Applications:"
Applications:
Address AppHandl [nod-index] NumAgents CoorEDUID Status C-AnchID C-StmtUID L-AnchID L-StmtUID Appid WorkloadID WorkloadOccID CollectActData CollectActPartition CollectSectionActuals
0x07800000035F0080 33966 [000-33966] 1 29281 UOW-Waiting 0 0 41 13 *LOCAL.db2inst1.151127142856 1 645 N C N
根据anchid和stmtuid定位sql
server1:/opt/IBM/db2/V10.5/bin$ db2pd -db TXDB -dynamic anch=41 | grep -ip "Dynamic SQL Statements"
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
0x0A000300653053E0 41 13 0 0 1 1 update employee set salary =
salary * 1.1
采用这样的方法可以定位等待lock的sql和持有lock的sql,把application id和sql相关信息以email形式发给dba
其他相关命令
db2pd -db TXDB -locks wait showlocks -transactions -agents -applications -dynamic
db2pd -db TXDB -locks -transactions -applications -dynamic
db2pd -db TXDB -locks wait showlocks