程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 分析DB2 9.5中的鎖定超時原因(2)

分析DB2 9.5中的鎖定超時原因(2)

編輯:DB2教程

清單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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved