Logging 如何分析db2logtimeout并将其链接到我的应用程序
我通过以下url成功创建了Logging 如何分析db2logtimeout并将其链接到我的应用程序,logging,db2,timeout,locking,Logging,Db2,Timeout,Locking,我通过以下url成功创建了db2locktimeout: db2版本10.1.0 我还成功地在我的应用程序上模拟了一个locktimeout 但是,我无法理解db2locktimeout日志中的Lock Owner部分 日志如下: LOCK TIMEOUT REPORT Date: 17/05/2018 Time: 16:45:21 Instance: db2inst1 Database: JXD
db2locktimeout
:
db2版本10.1.0
我还成功地在我的应用程序上模拟了一个locktimeout
但是,我无法理解db2locktimeout
日志中的Lock Owner
部分
日志如下:
LOCK TIMEOUT REPORT
Date: 17/05/2018
Time: 16:45:21
Instance: db2inst1
Database: JXDB01A
Member ID: 0
Lock Information:
Lock Name: 0008000800000000005D001952
Lock Type: Basic RECORD lock(DMS/IXM)
Lock Specifics: (obj={8;8}, rid=d(0;93;25), x00000000005D0019)
Lock Requestor:
System Auth ID: DB2INST1
Application Handle: [0-6433]
Application ID: *LOCAL.db2inst1.180517084432
Application Name: db2bp
Requesting Agent ID: 28111
Coordinator Agent ID: 28111
Coordinator Partition: 0
Lock timeout Value: 10000 milliseconds
Lock mode requested: ..X
Application Status: (SQLM_LOCKWAIT)
Current Operation: (SQLM_EXECUTE_IMMEDIATE)
Lock Escalation: No
Context of Lock Request:
Identification: UOW ID (1); Activity ID (1)
Activity Information:
Package Schema: (NULLID )
Package Name: (SQLC2K26NULLID )
Package Version: ()
Section Entry Number: 203
SQL Type: Dynamic
Statement Type: DML, Insert/Update/Delete
Effective Isolation: Cursor Stability
Statement Unicode Flag: No
Statement: update pHistory set companyName = 'jxLockTimeOutx2.2' where pHistoryId = 5522
Lock Owner (Representative):
System Auth ID: JXUSR
Application Handle: [0-6388]
Application ID: 10.44.4.1.56870.180517083000
Application Name: db2jcc_application
Requesting Agent ID: 26189
Coordinator Agent ID: 26189
Coordinator Partition: 0
Lock mode held: ..X
List of Active SQL Statements: Not available
List of Inactive SQL Statements from current UOW: Not available
我理解锁请求者部分,但是,我不能理解锁所有者部分,我仍然可以知道我的应用程序的哪个部分是所有者。(虽然我知道,因为我是模拟它的人)。我的意思是,我如何才能知道它是从我的应用程序的哪个部分基于此日志的。锁所有者是持有锁的连接,锁请求者正在等待它 锁所有者不必是您的应用程序,它可以是当前连接到数据库的任何其他应用程序 本例中的锁所有者是一个java应用程序(db2jcc_应用程序),运行在IP地址为10.44.4.1的主机名上,并使用帐户JXUSR连接到数据库。该连接对您的连接要更新的对象具有独占锁,因此您的连接必须等待,直到LOCKTIMEOUT过期,或者其他连接执行提交或回滚,或者被强制关闭 使用
db2 list applications show detail
查看所有连接,这将显示“应用程序句柄”和“应用程序ID”以及其他详细信息。您可以将这些信息与locktimeout报告文件中的信息相匹配
使用db2getsnapshotforapplicationagentid 6388
查看db2是否可以告诉您有关锁所有者连接的更多信息(由lockreport锁所有者部分中的应用程序句柄(=agentid)[0-6388]标识)。
您还可以使用db2 get snapshot for application applid 10.44.4.1.56870.180517083000来获得相同的结果
特别是,您可以研究快照输出,以查看应用程序是否被卡住(查看最新的操作时间戳)。如果应用程序当前处于空闲状态并且已处于空闲状态很长时间,则可以使用命令db2forceapplication(6388)
强制关闭它(通常最好让应用程序所有者或用户参与),该命令还将释放排他锁
您还可以使用SQL函数来查找此信息(有关详细信息,请参阅Db2知识中心),因此无需使用命令行
您还可以使用外部工具(而不是CLP)查看此信息(db2top、dsmtop、Data Server Manager和许多其他非IBM供应商的工具)。有些是文本工具,有些是GUI工具
另外,使用db2level
命令查找DB2V10.1的补丁包。
如果您的fixpack不是“fixpack 6”,那么计划升级到这个版本——V10.1的最终fixpack,或者迁移到版本10.5或11.1,因为IBM仍然支持这些版本(不像V10.1在2017年9月30日失去支持)。Hi@mao,对于第三段,是的,知道它,因为我是模拟它的人,因此,我认为它实际上来自一个java应用程序,并且来自哪个线程:)我尝试了
DB2GetSnapshot for application
,但它没有显示我想要的数据IL。然而,我尝试了另一种方法,它给了我想要的结果。在清单8中,您的问题与锁超时有关,但清单8与死锁有关(sqlcode-911的原因代码2)。DB2LUW为-911/-912/-913SQLCodes提供了不同的诊断选项,所有这些选项都适用于不同的用例。选择有效的方法。Stackoverflow不是教育或经验的替代品。嗨@mao,很抱歉我的观点。但是我使用的是清单8,然后我可以打印出锁所有者的详细信息。所以我认为它为我考虑了一个解决方案。对不起。我将尝试以更合适的方式使用StackOverFlow。