最近有一项目经常出现DB2表锁情况,从存储过程,到应用程序,如果你靠去查代码还真是费劲,也记得以前有人问过我如何看DB2表的锁,这次都在这里一一讲清楚了,讲归讲,大家记得自己多去试试,实战是最佳的学习方法,我一直比较崇尚“从问题中学习结”。
―――Dream
第一步,打开Snapshot监控
db2 update monitor switches using lock on statement on uow on
第二步,检查锁等待情况
db2pd -db sample -locks wait showlocks
Database Partition 0 -- Database SAMPLE -- Active -- Up 3 days 08:33:05
Locks:
AddressTranHdlLockname Type Mode Sts Owner Dur
0x050A0240 6 02000600050040010000000052 Row ..X W 2 1
0x050A0DB0 2 02000600050040010000000052 Row ..X G 2 1
HoldCount Att ReleaseFlg
0 0x00 0x40000000 TbspaceID 2 TableID 6 PartitionID 0 Page 320 Slot 5
0 0x00 0x40000000 TbspaceID 2 TableID 6 PartitionID 0 Page 320 Slot 5
|
--Sts列 W 表示等待 G代表被授权获得锁
第三步,找到TransID对应的ApplID
db2pd -db sample –trans
Database Partition 0 -- Database SAMPLE -- Active -- Up 3 days 08:34:47
Transactions:
AddressAppHandl[nod-index]TranHdl Locks State Tflag Tflag2
0x0514188030 [000-00030]2 9 WRITE 0x00000000 0x00000
0x0514488034 [000-00034]6 5 WRITE 0x00000000 0x00000
|
第四步,通过获取快照,定位锁的SQL
db2 get snapshot for application agentid 30
db2 get snapshot for application agentid 34
接下来也可以通过db2pd分析,不通过snapshot
第五步,获得应用程序与相关代理信息
db2pd -agents
Database Partition 0 -- Active -- Up 3 days 08:35:42
Agents:
Current agents: 2
Idle agents: 0
Active coord agents: 2
Active agents total: 2
Pooled coord agents: 0
Pooled agents total: 0
AddressAppHandl[nod-index]AgentTid Priority Type State
0x04449BC034 [000-00034]3392 0 Coord Inst-Active
0x0444924030 [000-00030]2576 0 Coord Inst-Active
ClientPid Userid ClientNm Rowsread Rowswrtn LkTmOt DBName
3916 USER_B db2bp.ex 43 43 NotSet SAMPLE
2524 USER_A db2bp.ex 153 14 NotSet SAMPLE
|
第六步,获取应用程序其他信息
db2pd -db sample -applications
Database Partition 0 -- Database SAMPLE -- Active -- Up 3 days 08:36:14
Applications:
AddressAppHandl[nod-index] NumAgents CoorTid Status
0x04AF808034 [000-00024] 1 3940 Lock-wait
0x0384196030 [000-00020] 1 2548 UOW-Waiting
C-AnchIDC-StmtUID L-AnchID L-StmtUID Appid
195 1 0 0 *LOCAL.DB2.061122195637
0 0 60 1 *LOCAL.DB2.061122195609
|
第七步,检查动态语句缓存的内容
db2pd -db sample -dynamic
Database Partition 0 -- Database SAMPLE -- Active -- Up 3 days 08:37:39
Dynamic Cache:
Current Memory Used 187188
Total Heap Size 1271398
Cache Overflow Flag 0
Number of References 2
Number of Statement Inserts 3
Number of Statement Deletes 0
Number of Variation Inserts 2
Number of Statements 3
Dynamic SQL Statements:
Address AnchID StmtUID NumEnv NumVar NumRef NumExe
0x056CEBD0 60 1 1 1 1 1
0x056CE850 180 1 0 0 0 0
0x056CFEA0195 1 1 1 1 1
Text
UPDATE EMPLOYEE SET BONUS = SALARY * 0.1 WHERE JOB = 'MANAGER'
SET CURRENT LOCALE LC_CTYPE = 'de_DE'
UPDATE EMPLOYEE SET SALARY = SALARY * 0.02
Dynamic SQL Environments:
Address AnchID StmtUID EnvID Iso QOpt Blk
0x056CECD0 60 1 1 CS 5 B
0x056D30A0 195 1 1 CS 5 B
Dynamic SQL Variations:
AddressAnchIDStmtUID EnvID VarID NumRef Typ
0x056CEEB0 60 1 1 1 1 4
0x056D3220195 1 1 1 1 4
Lockname
010000000100000001003C0056
01000000010000000100C30056
|
第八步,锁分析的重复获取
db2pd -db sample -locks wait showlocks -transactions -agents -applications –dynamic -file
分享到:
相关推荐
DB2问题诊断是数据库管理员在面对系统异常或性能问题时的关键技能。DB2提供了丰富的工具和日志资源,帮助诊断并解决可能出现的问题。以下是一些关键的DB2问题诊断工具和方法: 1. **管理通知日志(Management ...
DB2锁问题处理最佳实践,是指在使用DB2数据库过程中,针对数据库锁相关问题的一系列预防、诊断和解决方法。数据库锁是数据库管理系统保证数据完整性和并发控制的重要机制,但不当的锁使用也会导致性能瓶颈和应用程序...
### DB2 查询锁的方法 在DB2数据库管理系统中,锁是一种重要的机制,用于管理多个用户对数据资源的同时访问,...这些信息对于理解数据库中并发控制的行为至关重要,并且对于数据库管理员来说是非常有价值的诊断工具。
* Latching:Db2 LUW 的锁机制,可以帮助数据库管理员解决并发问题。 Db2 LUW 问题诊断中的一些常见的问题类型包括: * 数据库崩溃 * 数据库挂起 * 性能问题 * 数据损坏 * 客户机问题 * 服务器机问题 * 操作系统...
这有助于DBA诊断性能问题和优化数据库配置。 #### 八、总结 DB2的锁机制是其并发控制的核心,通过合理配置锁模式和管理策略,可以显著提高数据库系统的性能和稳定性。对于DBA来说,深入理解DB2的锁机制是优化...
8. **锁问题**:并发访问数据库时,可能会出现死锁或等待锁的情况。理解锁的类型和工作原理是解决这类问题的关键。 9. **表空间和分区**:表空间管理不当可能导致磁盘空间问题,而分区策略错误可能影响查询效率。 ...
总的来说,本文通过深入探讨一个具体的DB2锁等待问题,展示了如何使用锁等待分析方法和db2trc工具来诊断和解决此类问题。这对于提升DBA在处理复杂并发问题时的能力,以及理解DB2内部机制具有很大的帮助。通过学习和...
例如,监控SQL查询的执行计划可以帮助识别低效的查询,而检查系统锁和事务状态可以揭示并发控制的问题。 最后,当性能问题出现时,要有条不紊地进行故障诊断。这通常包括收集和分析系统日志、跟踪性能指标、定位...
锁机制是并发控制的基础,DB2提供了多种锁类型,如行锁、表锁和页面锁,以保证多用户环境下的数据完整性。 ### 诊断案例 诊断案例部分提供了实际问题的解决思路和方法,通常包括: #### SQL性能分析 分析慢查询的...
当DB2出现问题时,分析进程状态和行为是常见的诊断方法。DB2提供了多种工具,如db2pd、db2top等,用于查看和分析进程的详细信息,帮助定位问题。 总结,DB2进程是其核心运行机制的关键组成部分,涉及到数据库的启动...
DB2最佳实践性能调优和问题诊断涉及到数据库系统的多个层面,包括硬件配置、监控和故障诊断。以下是对这些关键知识点的详细阐述: 1. **硬件配置**:硬件配置是DB2性能的基础,尤其是在商务智能(BI)环境中。CPU...
DB2 锁分析是指对 DB2 数据库中锁的分析和诊断。锁是数据库系统中的一种机制,用于控制并发访问数据的资源,以避免数据的不一致和损坏。DB2 锁分析的目的是为了检测和解决锁相关的问题,从而提高数据库的性能和可靠...
他们还需要熟悉 DB2 的各种管理工具,如 db2top 和 db2pd,这些工具可以帮助实时查看数据库的状态,进行问题诊断。同时,了解数据库的内部架构,如缓冲池、日志管理等,对于理解和解决问题至关重要。 总的来说,这...
第12章 DB2调优案例、问题总结和技巧 12.1 调优案例一:某移动公司存储设计不当和SQL引起的I/O瓶颈 12.2 调优案例二:某银行知识库系统锁等待、锁升级引起性能瓶颈 12.3 调优案例三:某汽车制造商ERP系统通过调整...
除了基本的错误处理和诊断,了解DB2的事务处理、锁机制、性能优化、备份恢复策略等也是至关重要的。例如,错误码407可能涉及到事务的并发控制,需要理解死锁和事务隔离级别。而错误码104可能是由于语法错误,这可能...
Db2 Package不仅涉及到SQL语句的预编译,还与数据库的锁机制、并发控制以及资源竞争紧密相关。在本文中,我们将探讨几个在实际操作中遇到的Db2 Package相关的性能问题,以及如何解决这些问题。 首先,我们要明确,...
并发控制是指对数据库系统的并发访问进行控制,以避免数据不一致和锁等问题。 DB2 数据库系统提供了多种并发控制机制,包括锁机制、事务机制等。 故障诊断 故障诊断是指对数据库系统的故障进行诊断和解决。 DB2 ...
本文以某银行的DB2数据库系统为例,深入探讨了如何诊断和解决此类问题。 首先,当遇到系统响应变慢、ACTIVE SESSION数量异常增加时,DBA通常会检查一系列关键指标,如CPU、内存、I/O、LOCK WAIT和缓冲池命中率。...
8. **故障诊断与问题解决**:理解错误日志和跟踪文件的分析,以及如何解决常见的数据库运行问题。 9. **高可用性与灾难恢复**:了解DB2的复制技术,如纯异步复制、半同步复制,以及全局数据库集群的概念。 10. **...