分析DB2 9.5中的锁定超时原因

在 DB29.5中,分析锁定超时的方法得到了极大改进,锁定超时分析变得更加简单。本文主要是探索这些全新的锁定超时报告功能,并检查收集的附加信息以确定发生锁定超时的具体原因。

 

回顾DB2 9.1中的锁定超时分析

使用db2pd工具和db2cos脚本进行锁定超时分析的方法包含以下几步:

1.使用一个特殊的DB2脚本 — 名为 db2cos — 在每次调用db2cos脚本时执行一个db2pd调用。db2pd 调用收集与锁定、事务、应用程序、语句缓存相关的信息,并将信息存储在一个文本文件中以供分析。

2.要在锁定超时发生时自动执行 db2cos 脚本(以及包含的 db2pd 命令,需要使用 db2pdcfg 命令注册锁定超时事件。

3.在锁定超时事件中,DBA 可以检查通过自动调用 db2cos 脚本生成的 db2pd 输出。这使 DBA 能够确定发生锁定争用的原因,从而设法在以后避免发生这类情形。

尽管其中介绍的方法提供了大量信息,使得锁定超时分析比以前的 DB2 9 for Linux, Unix, and Windows 版本更加简单,但它仍然存在一些不足:

◆使用此方法需要手动改写 db2cos 脚本并通过调用 db2pdcfg 来注册锁定超时事件。两个步骤都不复杂,但是对于新手来说可能有些困难。

◆解释 db2pd 输出以识别锁定超时情形中涉及的应用程序和 SQL 语句,这个任务并不容易,而且需要一些尝试。

◆如果锁定超时是由包含多个 SQL 命令的事务引起的,那么 db2pd 收集的信息可能还不足以确定导致锁定的 SQL 语句。

DB2 9.5 中全新的锁定超时报告功能

在 DB2 9.5 的锁定超时报告功能中,引入了一个新特性,使得锁定超时分析变得非常简单。要激活锁定超时报告,只需将 DB2 注册变量 DB2_CAPTURE_LOCKTIMEOUT 设置为 ON,并重新启动您的 DB2 实例:

清单 1. 激活 DB2 9.5 中的锁定超时报告

  1. db2set DB2_CAPTURE_LOCKTIMEOUT=ON   
  2. db2stop   
  3. db2start  

是的,就是这么简单。当 DB2_CAPTURE_LOCKTIMEOUT 设置为 ON 时,DB2 为每个锁定超时事件自动创建一个报告文件。报告文件保存在 DIAGPATH 数据库管理员配置(DBM CFG)参数指向的目录中,包含的信息有:锁定超时的日期和时间、存在问题的锁定、锁定请求程序和锁定拥有者。

 

那么 DB2 9.5 中就不使用 db2cos 脚本了吗?事实并非如此。将 db2cos 脚本和 db2pd 工具结合具有非常广泛的用途。这意味着,这些工具组合仍然可用于捕捉与 SQL 代码和 DB2 内部返回代码相关的任何 DB2 事件信息,而不仅仅是锁定超时信息。

现在看看新的 DB2 9.5 注册变量 DB2_CAPTURE_LOCKTIMEOUT 并查看一个使用 DB2 SAMPLE 数据库的锁定超时示例场景。如果 SAMPLE 数据库不存在,可以调用下面的命令创建一个:

分析DB2 9.5中的锁定超时原因

作者: kaduo,  出处:IT专家网论坛, 责任编辑: 陈子琪, 2009-05-20 07:00

 

在 DB29.5中,分析锁定超时的方法得到了极大改进,锁定超时分析变得更加简单。本文探索这些全新的锁定超时报告功能,并检查收集的附加信息以确定发生锁定超时的原因。

 

在 DB29.5中,分析锁定超时的方法得到了极大改进,锁定超时分析变得更加简单。本文探索这些全新的锁定超时报告功能,并检查收集的附加信息以确定发生锁定超时的原因。

 

回顾DB2 9.1中的锁定超时分析

使用db2pd工具和db2cos脚本进行锁定超时分析的方法包含以下几步:

1.使用一个特殊的DB2脚本 — 名为 db2cos — 在每次调用db2cos脚本时执行一个db2pd调用。db2pd 调用收集与锁定、事务、应用程序、语句缓存相关的信息,并将信息存储在一个文本文件中以供分析。

2.要在锁定超时发生时自动执行 db2cos 脚本(以及包含的 db2pd 命令,需要使用 db2pdcfg 命令注册锁定超时事件。

3.在锁定超时事件中,DBA 可以检查通过自动调用 db2cos 脚本生成的 db2pd 输出。这使 DBA 能够确定发生锁定争用的原因,从而设法在以后避免发生这类情形。

尽管其中介绍的方法提供了大量信息,使得锁定超时分析比以前的 DB2 9 for Linux, Unix, and Windows 版本更加简单,但它仍然存在一些不足:

◆使用此方法需要手动改写 db2cos 脚本并通过调用 db2pdcfg 来注册锁定超时事件。两个步骤都不复杂,但是对于新手来说可能有些困难。

◆解释 db2pd 输出以识别锁定超时情形中涉及的应用程序和 SQL 语句,这个任务并不容易,而且需要一些尝试。

◆如果锁定超时是由包含多个 SQL 命令的事务引起的,那么 db2pd 收集的信息可能还不足以确定导致锁定的 SQL 语句。

DB2 9.5 中全新的锁定超时报告功能

在 DB2 9.5 的锁定超时报告功能中,引入了一个新特性,使得锁定超时分析变得非常简单。要激活锁定超时报告,只需将 DB2 注册变量 DB2_CAPTURE_LOCKTIMEOUT 设置为 ON,并重新启动您的 DB2 实例:

清单 1. 激活 DB2 9.5 中的锁定超时报告

  1. db2set DB2_CAPTURE_LOCKTIMEOUT=ON   
  2. db2stop   
  3. db2start  

是的,就是这么简单。当 DB2_CAPTURE_LOCKTIMEOUT 设置为 ON 时,DB2 为每个锁定超时事件自动创建一个报告文件。报告文件保存在 DIAGPATH 数据库管理员配置(DBM CFG)参数指向的目录中,包含的信息有:锁定超时的日期和时间、存在问题的锁定、锁定请求程序和锁定拥有者。

 

那么 DB2 9.5 中就不使用 db2cos 脚本了吗?事实并非如此。将 db2cos 脚本和 db2pd 工具结合具有非常广泛的用途。这意味着,这些工具组合仍然可用于捕捉与 SQL 代码和 DB2 内部返回代码相关的任何 DB2 事件信息,而不仅仅是锁定超时信息。

现在看看新的 DB2 9.5 注册变量 DB2_CAPTURE_LOCKTIMEOUT 并查看一个使用 DB2 SAMPLE 数据库的锁定超时示例场景。如果 SAMPLE 数据库不存在,可以调用下面的命令创建一个:#p#

清单6. 锁定超时报告

  1. LOCK TIMEOUT REPORT   
  2. Date: 03/01/2008   
  3. Time: 07:34:31   
  4. Instance: DB2   
  5. Database: SAMPLE   
  6. Database Partition: 0   
  7. Lock Information:   
  8. Lock Name: 02000600040040010000000052   
  9. Lock Type: Row   
  10. Lock Specifics: Tablespace ID=2, Table ID=6, Row ID=x0400400100000000   
  11. Lock Requestor:   
  12. System Auth ID: FECHNER   
  13. Application Handle: [0-38]   
  14. Application ID: *LOCAL.DB2.080103063343   
  15. Application Name: db2bp.exe   
  16. Requesting Agent ID: 5232   
  17. Coordinator Agent ID: 5232   
  18. Coordinator Partition: 0   
  19. Lock timeout Value: 10000 milliseconds   
  20. Lock mode requested: ..U   
  21. Application Status: (SQLM_UOWEXEC)   
  22. Current Operation: (SQLM_EXECUTE_IMMEDIATE)   
  23. Lock Escalation: No   
  24. Context of Lock Request:   
  25. Identification: UOW ID (1); Activity ID (1)   
  26. Activity Information:   
  27. Package Schema: (NULLID )   
  28. Package Name: (SQLC2G13NULLID )   
  29. Package Version: ()   
  30. Section Entry Number: 203   
  31. SQL Type: Dynamic   
  32. Statement Type: DML, Insert/Update/Delete   
  33. Effective Isolation: Cursor Stability   
  34. Statement Unicode Flag: No   
  35. Statement: UPDATE EMPLOYEE SET BONUS = SALARY * 0.1   
  36. WHERE JOB = 'MANAGER'   
  37. Lock Owner (Representative):   
  38. System Auth ID: FECHNER   
  39. Application Handle: [0-33]   
  40. Application ID: *LOCAL.DB2.080103063332   
  41. Application Name: db2bp.exe   
  42. Requesting Agent ID: 5488   
  43. Coordinator Agent ID: 5488   
  44. Coordinator Partition: 0   
  45. Lock mode held: ..X   
  46. List of Active SQL Statements: Not available   
  47. List of Inactive SQL Statements from current UOW: Not available  

清单6. 锁定超时报告

  1. LOCK TIMEOUT REPORT   
  2. Date: 03/01/2008   
  3. Time: 07:34:31   
  4. Instance: DB2   
  5. Database: SAMPLE   
  6. Database Partition: 0   
  7. Lock Information:   
  8. Lock Name: 02000600040040010000000052   
  9. Lock Type: Row   
  10. Lock Specifics: Tablespace ID=2, Table ID=6, Row ID=x0400400100000000   
  11. Lock Requestor:   
  12. System Auth ID: FECHNER   
  13. Application Handle: [0-38]   
  14. Application ID: *LOCAL.DB2.080103063343   
  15. Application Name: db2bp.exe   
  16. Requesting Agent ID: 5232   
  17. Coordinator Agent ID: 5232   
  18. Coordinator Partition: 0   
  19. Lock timeout Value: 10000 milliseconds   
  20. Lock mode requested: ..U   
  21. Application Status: (SQLM_UOWEXEC)   
  22. Current Operation: (SQLM_EXECUTE_IMMEDIATE)   
  23. Lock Escalation: No   
  24. Context of Lock Request:   
  25. Identification: UOW ID (1); Activity ID (1)   
  26. Activity Information:   
  27. Package Schema: (NULLID )   
  28. Package Name: (SQLC2G13NULLID )   
  29. Package Version: ()   
  30. Section Entry Number: 203   
  31. SQL Type: Dynamic   
  32. Statement Type: DML, Insert/Update/Delete   
  33. Effective Isolation: Cursor Stability   
  34. Statement Unicode Flag: No   
  35. Statement: UPDATE EMPLOYEE SET BONUS = SALARY * 0.1   
  36. WHERE JOB = 'MANAGER'   
  37. Lock Owner (Representative):   
  38. System Auth ID: FECHNER   
  39. Application Handle: [0-33]   
  40. Application ID: *LOCAL.DB2.080103063332   
  41. Application Name: db2bp.exe   
  42. Requesting Agent ID: 5488   
  43. Coordinator Agent ID: 5488   
  44. Coordinator Partition: 0   
  45. Lock mode held: ..X   
  46. List of Active SQL Statements: Not available   
  47. List of Inactive SQL Statements from current UOW: Not available  

 清单9. 包含 SQL 语句历史信息的锁定超时报告

  1. LOCK TIMEOUT REPORT   
  2. Date: 03/01/2008   
  3. Time: 15:10:13   
  4. Instance: DB2   
  5. Database: SAMPLE   
  6. Database Partition: 0   
  7. Lock Information:   
  8. Lock Name: 02000600040040010000000052   
  9. Lock Type: Row   
  10. Lock Specifics: Tablespace ID=2, Table ID=6, Row ID=x0400400100000000   
  11. Lock Requestor:   
  12. System Auth ID: FECHNER   
  13. Application Handle: [0-202]   
  14. Application ID: *LOCAL.DB2.080103140934   
  15. Application Name: db2bp.exe   
  16. Requesting Agent ID: 2356   
  17. Coordinator Agent ID: 2356   
  18. Coordinator Partition: 0   
  19. Lock timeout Value: 10000 milliseconds   
  20. Lock mode requested: ..U   
  21. Application Status: (SQLM_UOWEXEC)   
  22. Current Operation: (SQLM_EXECUTE_IMMEDIATE)   
  23. Lock Escalation: No   
  24. Context of Lock Request:   
  25. Identification: UOW ID (1); Activity ID (1)   
  26. Activity Information:   
  27. Package Schema: (NULLID )   
  28. Package Name: (SQLC2G13NULLID )   
  29. Package Version: ()   
  30. Section Entry Number: 203   
  31. SQL Type: Dynamic   
  32. Statement Type: DML, Insert/Update/Delete   
  33. Effective Isolation: Cursor Stability   
  34. Statement Unicode Flag: No   
  35. Statement: UPDATE EMPLOYEE SET BONUS = SALARY * 0.1   
  36. WHERE JOB = 'MANAGER'   
  37. Lock Owner (Representative):   
  38. System Auth ID: FECHNER   
  39. Application Handle: [0-188]   
  40. Application ID: *LOCAL.DB2.080103140511   
  41. Application Name: db2bp.exe   
  42. Requesting Agent ID: 5488   
  43. Coordinator Agent ID: 5488   
  44. Coordinator Partition: 0   
  45. Lock mode held: ..X   
  46. List of Active SQL Statements: Not available   
  47. List of Inactive SQL Statements from current UOW:   
  48. Entry: #1   
  49. Identification: UOW ID (6); Activity ID (2)   
  50. Package Schema: (NULLID )   
  51. Package Name: (SQLC2G13)   
  52. Package Version: ()   
  53. Section Entry Number: 201   
  54. SQL Type: Dynamic   
  55. Statement Type: DML, Select (blockable)   
  56. Effective Isolation: Cursor Stability   
  57. Statement Unicode Flag: No   
  58. Statement: SELECT LASTNAME, FIRSTNME, SALARY FROM EMPLOYEE   
  59. ORDER BY LASTNAME ASC   
  60. Entry: #2   
  61. Identification: UOW ID (6); Activity ID (1)   
  62. Package Schema: (NULLID )   
  63. Package Name: (SQLC2G13)   
  64. Package Version: ()   
  65. Section Entry Number: 203   
  66. SQL Type: Dynamic   
  67. Statement Type: DML, Insert/Update/Delete   
  68. Effective Isolation: Cursor Stability   
  69. Statement Unicode Flag: No   
  70. Statement: UPDATE EMPLOYEE SET SALARYSALARY = SALARY * 1.02  

这个锁定超时报告的开始部分与前面看到的相同。但是,这次的 Lock Owner 部分包含额外的、有价值的信息。在标题 List of Inactive SQL Statements from current UOW 下边,可以看到在发生锁定超时之前锁持有者的事务执行的所有 SQL 语句。从这组 SQL 语句中,可以找到导致问题锁定的语句。在这个场景中,使用 UPDATE 语句增加每个员工的工资。

 

注意,这个功能是对结合使用 db2cos 和 db2pd 方法的一个重大改进。使用 db2cos 与 db2pd 相结合的方法,只能看到锁持有者的应用程序执行的***一条语句 — 在这个场景中是对 EMPLOYEE 表的查询。但是由于查询并没有导致出现问题的独占锁,您仍然不知道是哪条语句导致了锁定。使用新方法 — DB2_CAPTURE_LOCKTIMEOUT 和死锁事件监视器 — 您拥有在锁拥有者的事务中执行的所有 SQL 语句的历史信息,这就可以将 UPDATE 确定为相关的语句。

使用锁定超时报告的提示

带有语句历史功能的死锁事件监视器适用于所有应用程序,会增加 DB2 数据库管理程序对监视器堆的大量使用。所以应该谨慎使用。您应该始终首先设置 DB2_CAPTURE_LOCKTIMEOUT=ON,然后只在必要的时候使用 DETAILS HISTORY 选项激活死锁事件监视器。

使用锁定超时报告时,您可能会注意到,DIAGPATH 中的锁定超时报告文件的数量在持续增加。DB2 不会删除这些报告文件,所以 DBA 需要删除它们或者将它们移动到不同的位置,以便在 DIAGPATH 的文件系统上始终有足够的空间。

即使拥有了锁定超时报告功能,也不是总能够轻松确定出导致锁定超时的原因。例如,如果锁定超时由静态 SQL 或 DB2 内部锁定引起时,就没有那么容易确定原因。DB2 9.5 文档的 Lock timeout reporting 一章提供了这些局限性的一个简短列表(参见下面的 参考资料)。但是,DB2 9.5 中的锁定超时报告绝对是一个许多 DBA 期待已久的功能,而且将大大简化对锁定超时的分析。
以上的相关内容就是对分析DB2 9.5中的锁定超时原因的介绍,望你能有所收获。

【编辑推荐】

  1. DB2数据库从Excel中读取数据举例
  2. DB2数据库双机的安装方法介绍
  3. DB2数据库开发常见问题解答
  4. DB2数据库的安装目录结构介绍
  5. shell抽取db2数据库数据的方法示例

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/233666.html<

(0)
运维的头像运维
上一篇2025-04-20 17:51
下一篇 2025-04-20 17:52

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注