设为首页 收藏本站
查看: 1125|回复: 0

[经验分享] db2锁等待和死锁

[复制链接]

尚未签到

发表于 2016-11-13 12:00:55 | 显示全部楼层 |阅读模式
telnet 182.100.100.51
db2pd -db aaa -locks -transactions -applications -dynamic -file lock.txt
db2pd -db aaa -locks show detail -file lock.txt
db2pd -db aaa -locks showlock wait -file lock.txt
db2pd -db aaa -tcb

select tbspace,tabschema,tabname,tableid,tbspaceid from syscat.tables where tbspaceid=3 and tableid=335



C:\>db2 update monitor switches using lock on 
C:\>db2 get snapshot for locks on datcmg | more

Locks:
Address            TranHdl    Lockname                   Type       Mode Sts Owner      Dur HoldCount  Att  ReleaseFlg
0x070000002F7B6B40 43         0002010C0000000077A3000252 Row        .NS  G   43         1   0          0x00 0x00000001
0x07000000302241C0 23         0002010C0000000077A3000252 Row        ..X  W   43         1   0          0x00 0x40000000
//事物23被事物43锁了

Transactions:
Address            AppHandl [nod-index] TranHdl    Locks      State   Tflag      Tflag2     Firstlsn       Lastlsn        LogSpace        SpaceReserved   TID            AxRegCnt   GXID     ClientUserID                   ClientWrkstnName               ClientApplName                 ClientAccntng                  
0x0700000020326500 22334    [000-22334] 23         4          READ    0x00000000 0x00000000 0x000000000000 0x000000000000 0               0               0x000000A1B3E7 1          0        n/a                            JYKL0                          n/a                            n/a                           
0x0700000020339B00 22322    [000-22322] 43         29         READ    0x00000000 0x00000000 0x000000000000 0x000000000000 0               0               0x000000A1AFE5 1          0        n/a                            JYKL0                          n/a                            n/a                           
//事物23关联应用22334,事物43关联应用22322

Applications:
Address            AppHandl [nod-index] NumAgents  CoorEDUID  Status                  C-AnchID C-StmtUID  L-AnchID L-StmtUID  Appid         
0x0780000001070080 22334    [000-22334] 1          26791      Lock-wait               53       5393       243      7524       182.100.100.50.51075.1002010812      
0x0780000001203260 22322    [000-22322] 1          6427       UOW-Waiting             0        0          188      7426       182.100.100.50.51023.1002010812   
//通过sql坐标可以定位锁sql和被锁sql

Dynamic SQL Statements:
Address            AnchID StmtUID    NumEnv     NumVar     NumRef     NumExe     Text
0x070000002F019680 53     5393       1          1          13         13         DELETE FROM LJSGetDraw WHERE
    GetNoticeNo = ? AND PolNo = ? AND DutyCode = ? AND GetDutyKind = ? AND GetDutyCode = ? AND Currency = ?
0x070000003A28CBE0 188    7426       1          1          1          1          SELECT * FROM LJSGetDraw a
    WHERE not exists(select 'X' from LJAGetDraw where PolNo=a.PolNo and DutyCode=a.DutyCode and GetDutyCode=a.GetDutyCode and
    GetDutyKind=a.GetDutyKind and GetNoticeNo=a.GetNoticeNo) and GetDate<=date('2010-01-29') and nvl(ComeFlag,'x')<>'1' and
    RReportFlag='0' and (not exists(select 1 from lccontstate where PolNo=a.PolNo and statetype='Available' and state='1' and
    enddate is null) and not exists(select 'X' from lcconthangupstate where contno =a.contno and hanguptype='2' ) and
    exists(select 'X' from LCPol where PolNo=a.PolNo and AppFlag='1' ) or exists (select 'x' from LMDutyGetAlive where
    MAXGETCOUNTTYPE='0' and GETDUTYCODE=a.GETDUTYCODE))
//WebSphere的jndi连接池自动设置高级别的db2隔离级别

不同一个数据库连接的事物会有隔离级别的控制,在本地连接db2级别低,但是WebSphere的jndi连接池自动设置高级别的db2隔离级别,
所以在长时间使用sql语句的时候,需要手工设置隔离级别为最低ur,来避免锁。
具体修改是在RSWrapper.java类增加
strSQL += " with ur";
所有sql都手工设置隔离级别ur


死锁监控器:
9.创建一个针对死锁的event monitor
db2 "create event monitor dlmon for deadlocks with details write to file '/home/db2inst1/evmon'";
db2 set event monitor dlmon state 1;激活
db2evmon -db datcmg -evm dlmon >/home/db2inst1/文件名

sql语句性能建议:
(请注意用相应db2用户telnet)
db2adivs -d dbname -i 1.sql>/home/db2inst1/文件名

抓快照:
db2 get snapshot for db on datcmg > /home/db2inst1/文件名

sql语句慢的快照:
db2 get snapshot for dynamic sql on sample

查询执行慢的sql:
select * from sysibmadm.top_dynamic_sql order by average_execution_time_s desc

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-299709-1-1.html 上篇帖子: Windows下DB2端口查看/修改/分配 下篇帖子: db2执行命令(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表