powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
6 сообщений из 6, страница 1 из 1
ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
    #39086477
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Появились проблеммы с блокировками ресурсов в DB2v9.7.8 for AIX64.
db2diag.log:
...
2015-10-26-08.03.44.806432+180 E35354527A906 LEVEL: Warning
PID : 7667784 TID : 26507 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : PRODG
APPHDL : 0-16874 APPID: 10.44.1.18.55330.151026050335
AUTHID : DB2INST1
EDUID : 26507 EDUNAME: db2agent (PRODG) 0
FUNCTION: DB2 UDB, data management, sqldEscalateLocks, probe:1
MESSAGE : ADM5501I DB2 is performing lock escalation. The affected application
is named "db2jcc_application", and is associated with the workload
name "SYSDEFAULTUSERWORKLOAD" and application ID
"10.44.1.18.55330.151026050335" at member "0". The total number of
locks currently held is "14", and the target number of locks to hold
is "7".
The current statement being executed is "SELECT * FROM
DB2ADMIN.MATERIALS". Reason code: "2" --временами бывает Reason code: "1"

2015-10-26-08.03.44.738146+180 E35329121A666 LEVEL: Warning
PID : 7667784 TID : 12791 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : PRODG
APPHDL : 0-17733 APPID: 10.44.1.18.55336.151026050346
AUTHID : DB2INST1
EDUID : 12791 EDUNAME: db2agent (PRODG) 0
FUNCTION: DB2 UDB, lock manager, sqlpRefillAgentLRBCache, probe:1020
DATA #1 : <preformatted>
Attempted to synchronously increase Locklist, but Locklist is not growable at this time
locklist size: 140576
databaseSharedMemorySetSize: 652416
requestedGrowthBytes: 524288
overflowBytesLeft: 583401272
additionalBytesForLL: 0
...

После появления такие предупреждений на стороне WebsphereApplServer откатывается транзакция:
0000006f ServletWrappe E SRVE0068E: Необрабатываемая исключительная ситуация сгенерирована в одном из служебных методов сервлета: PaymentResultAssist. Исключительная ситуация : org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [some sql]; SQL state [null]; error code [-4497]; [ibm][db2][jcc][10342][11669] Application must execute a rollback. The unit of work has already been rolled back in the database but other resource managers involved in this unit of work might not. To ensure integrity of this application, all SQL requests will be rejected until the application issues a rollback. ; nested exception is com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10342][11669] Application must execute a rollback. The unit of work has already been rolled back in the database but other resource managers involved in this unit of work might not. To ensure integrity of this application, all SQL requests will be rejected until the application issues a rollback.

В чем может быть проблемма? По умолчанию используется же CS-блокировка?
...
Рейтинг: 0 / 0
ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
    #39086795
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
curious_man,

Добрый день.

Это вам надо в package cache, например, найти, какой там уровень изоляции у запросов.
Код: sql
1.
2.
select effective_isolation, lock_escals, num_exec_with_metrics, stmt_text 
from table(mon_get_pkg_cache_stmt(null, null, null, -1))

Причины могут быть разные. У вас очень маленький locklist.
Если запрос изменяет данные, то блокировки держатся до конца транзакции.
Приложений может быть много, locklist'а не хватает даже для небольшого кол-ва блокировок каждым отдельным приложением.
...
Рейтинг: 0 / 0
ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
    #39086993
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
Выполнил запрос:
select effective_isolation, lock_escals, num_exec_with_metrics, stmt_text
from table(mon_get_pkg_cache_stmt(null, null, null, -1))
и выяснил, что все запросы от WebSphere работают под уровнем изоляции RS.

По-поводу величины locklist. Я обнаружил, что в этой базе включен Self tuning memory manager (STMM), т.к.
SELF_TUNING_MEM ON
PCKCACHESZ AUTOMATIC
LOCKLIST AUTOMATIC
MAXLOCKS automatic
SORTHEAP AUTOMATIC
SHEAPTHRES_SHR AUTOMATIC
DATABASE_MEMORY AUTOMATIC

db2 get db cfg показало:
Max storage for lock list (4KB) (LOCKLIST) = AUTOMATIC(140553)
Percent. of lock lists per application (MAXLOCKS) = AUTOMATIC(98)

Может есть смысл вручную установить LOCKLIST и MAXLOCKS?
...
Рейтинг: 0 / 0
ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
    #39087159
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
curious_manМожет есть смысл вручную установить LOCKLIST и MAXLOCKS?При включенном STMM лучше смотреть текущие параметры, а не те, которые при старте базы были.
Т.е.
db2 get db cfg show details

Если у вас текущий locklist примерно такой же, как сейчас (а он все-таки > 500 MB, это довольно много), то можно, конечно, и руками больше поставить locklist, но лучше разобраться, как в Сфере поставить CS вместо RS.
Можно уменьшить maxlocks. Это приведет к тому, что те, кто держат много блокировок, пораньше будут получать эскалацию, оставляя место для таких вот приложений, для которых надо 14 блокировок сконвертировать в 7, чтобы хоть как-то уменьшить занимаемое место в раздутом locklist.
Но, еще раз, лучше либо уровень изоляции понизить, либо разобраться, почему приложения так много сканируют.
...
Рейтинг: 0 / 0
ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
    #39087370
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Да, db2 get db cfg show detail показал, что:
...
LOCKLIST Current Value=AUTOMATIC(140553)
LOCKLIST Delayed Value=AUTOMATIC(140553)
MAXLOCKS Current Value=AUTOMATIC(98)
MAXLOCKS Delayed Value=AUTOMATIC(98)

А вот как определить, какие SQL заполняют locklist? Покажет lock_event_monitoring?
Вычислить SQL, которые заполняют locklist и дальше либо переписывать SQL либо играться с LOCKLIST/MAXLOCKS
Эти блокировки начались после выполнения скриптов по изменению структуры базы.
...
Рейтинг: 0 / 0
ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
    #39088773
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
curious_man,

В mon_get_connection есть num_locks_held, lock_escals.
В описании последнего показателя есть формула, как посчитать по кол-ву блокировок место в locklist.
Но это для того, что в денный момент происходит.

В MON_GET_PKG_CACHE_STMT есть lock_escals, по нему тоже можно как-то судить о возможно большом кол-ве блокировок.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / ADM5501I DB2 is performing lock escalation.Reason code: "2". SQL rollback.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]