Как проанализировать db2logtimeout и связать его с моим приложением - PullRequest
0 голосов
/ 17 мая 2018

Я успешно создал db2locktimeout по следующему URL:

https://www.ibm.com/support/knowledgecenter/SSEPGG_10.1.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005657.html

db2 version 10.1.0

И я также успешно смоделировал locktimeout в моем приложении.

Однако я не могу понять в части Lock Owner в журнале db2locktimeout.

Журнал выглядит следующим образом:

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

Я понимаю, что касается запроса на блокировку, однако я не могу понять, что такое владелец блокировки, я все еще могу узнать, какая часть моего приложения является владельцем. (Хотя я это знаю, потому что я человек, который имитирует это). Я имею в виду, как я могу узнать, из какой части моего приложения основано на этом журнале.

1 Ответ

0 голосов
/ 17 мая 2018

Владелец блокировки - это соединение, которое удерживает блокировку, на которой ожидает запрос блокировки.

Владелец блокировки не должен быть вашим приложением, это может быть любое другое приложение, подключенное в данный момент.в базу данных.

Владельцем блокировки в вашем случае является Java-приложение (db2jcc_application), работающее на имени хоста с IP-адресом 10.44.4.1 и подключенное к базе данных с учетной записью JXUSR.Это соединение имеет эксклюзивную блокировку для объекта, который ваше соединение хочет обновить, поэтому ваше соединение должно ждать, пока не истечет или LOCKTIMEOUT, или другое соединение выполнит фиксацию или откат, или будет принудительно отключено.

Использование db2 list applications show detail, чтобы увидеть все соединения, и это покажет и «дескриптор приложения», и «идентификатор приложения», и другие детали.Вы можете сопоставить их с информацией в файле отчета о времени ожидания блокировки.

Используйте db2 get snapshot for application agentid 6388, чтобы увидеть, может ли Db2 рассказать вам что-нибудь еще о соединении с владельцем блокировки (идентифицируется дескриптором приложения (= agentid) [0-6388] из раздела владельца блокировки lockreport).Вы также можете использовать db2 get snapshot for application applid 10.44.4.1.56870.180517083000, чтобы получить тот же результат.

В частности, вы можете изучить вывод этого снимка, чтобы увидеть, не зависло ли приложение (посмотрите последние отметки времени работы).Если приложение в настоящее время бездействует и долгое время не использовалось, вы можете принудительно отключить его (обычно лучше привлечь владельца или пользователя приложения) с помощью команды db2 force application (6388), которая также снимет исключительную блокировку.

Вы также можете использовать функции SQL для поиска этой информации (подробности см. В Центре знаний Db2), поэтому нет необходимости использовать командную строку.

Вы также можете использовать внешние инструменты (вместо CLP).) для просмотра этой информации (db2top, dsmtop, Data-Server-Manager и многие другие инструменты сторонних поставщиков).Некоторые из них являются текстовыми инструментами, другие - инструментами с графическим интерфейсом.

Отдельно используйте команду db2level, чтобы найти пакет исправлений для Db2 v10.1.Если ваш пакет исправлений не является «пакетом исправлений 6», то запланируйте обновление до этого - окончательного пакета исправлений V10.1 или перейдите на версию 10.5 или версию 11.1, поскольку эти версии все еще поддерживаются IBM (в отличие от V10.1, который вышел из поддержки30 сентября / 2017)

...