powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / заблокировались таблицы
9 сообщений из 9, страница 1 из 1
заблокировались таблицы
    #37586540
cumba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все привет!

Есть приложение которое работает с базой. раньше было все нормально, но теперь стали блокироваться таблицы.
Можно где-нибудь посмотреть блокировки, какие таблицы заблокированы, кем?
И из за чего появилась эта проблема и как её решить ?

db2 get db cfg

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
       Конфигурация базы данных 



 Выпуск конфигурации базы данных                         = 0x0c00

 Выпуск базы данных                                      = 0x0c00



 Территория базы данных                                  = En_US

 Кодовая страница базы данных                            = 1208

 Кодовый набор базы данных                               = UTF-8

 Код страны/региона базы данных                          = 1

 Последовательность упорядочивания базы данных           = IDENTITY

 Альтернативная последовательность слияния (ALT_COLLATE) = 

 Совместимость чисел                                     = OFF

 Совместимость с Varchar2                                = OFF

 Размер страницы базы данных                             = 4096



 Управление динамическими запросами SQL (DYN_QUERY_MGMT) = DISABLE



 Поддержка поиска для базы данных          (DISCOVER_DB) = ENABLE



 Ограниченный доступ                                     = NO

 Класс оптимизации запросов по умолчанию  (DFT_QUERYOPT) = 5

 Уровень параллелизма                       (DFT_DEGREE) = 1

 Продолжение при арифметических ошибках(DFT_SQLMATHWARN) = NO

 Интервал обновления по умолчанию      (DFT_REFRESH_AGE) = 0

 Типы обсл. таблиц по умолчанию для опт.(DFT_MTTB_TYPES) = SYSTEM

 Число хранящихся частых значений       (NUM_FREQVALUES) = 10

 Число хранимых квантилей                (NUM_QUANTILES) = 20



 Режим округления для десятичных с плавающей точкой (DECFLT_ROUNDING) = ROUND_HALF_EVEN



 Отложено резервных копирований                          = NO



 База данных в согласованном состоянии                   = NO

 Повторов отложено                                       = NO

 Восстановлений отложено                                 = NO



 Многостраничное размещение файлов разрешено             = YES



 Состояние сохранения в журнале для восстановления       = NO

 Состояние обработчика пользователя для регистрации      = NO



 Самонастраивающаяся память            (SELF_TUNING_MEM) = ON

 Размер совм.памяти базы данных(4 Кбайт)(DATABASE_MEMORY)= AUTOMATIC

 Порог памяти базы данных               (DB_MEM_THRESH) = 10

 Макс. память списка блокировок (4 Кбайт)     (LOCKLIST) = AUTOMATIC

 Процент списков блокировки на программу      (MAXLOCKS) = AUTOMATIC

 Размер кэша пакета (4 Кбайт)               (PCKCACHESZ) = AUTOMATIC

 Порог куч совмест. сортировок (4 Кбайт)(SHEAPTHRES_SHR) = AUTOMATIC

 Размер кучи списка сортировки (4 Кбайт)      (SORTHEAP) = AUTOMATIC



 Размер кучи базы данных (4 Кбайт)              (DBHEAP) = AUTOMATIC

 Размер кэша каталога (4 Кбайта)       (CATALOGCACHE_SZ) = 260

 Размер буфера журнала (4 Кбайт)              (LOGBUFSZ) = 98

 Размер кучи утилит (4 Кбайт)             (UTIL_HEAP_SZ) = 50279

 Размер пула буферов (страниц)                (BUFFPAGE) = 250

 Размер кучи оператора SQL (4 Кбайт)          (STMTHEAP) = AUTOMATIC

 Размер кучи программы по умолчанию (4 Кбайт)(APPLHEAPSZ)= AUTOMATIC

 Размер памяти прикладных программ (4 Кбайта) (APPL_MEMORY) = AUTOMATIC

 Размер кучи статистики (4 Кбайт)         (STAT_HEAP_SZ) = AUTOMATIC



 Интервал проверки тупиковых ситуаций (мс)   (DLCHKTIME) = 10000

 Время ожидание блокировки (сек)           (LOCKTIMEOUT) = -1



 Предельная доля измененных страниц     (CHNGPGS_THRESH) = 80

 Число асинхронных чистильщиков страниц (NUM_IOCLEANERS) = AUTOMATIC

 Число серверов ввода-вывода             (NUM_IOSERVERS) = AUTOMATIC

 Флаг сортировки индекса                     (INDEXSORT) = YES

 Флаг обнаружения последовательного чтения   (SEQDETECT) = YES

 Предварит.выборка по умолч. (страниц) (DFT_PREFETCH_SZ) = AUTOMATIC



 Отслеживать измененные страницы              (TRACKMOD) = OFF



 Число контейнеров по умолчанию                          = 1

 Экстент табл.простр.по умолч. (страниц) (DFT_EXTENT_SZ) = 32



 Максимальное число активных программ         (MAXAPPLS) = AUTOMATIC

 Среднее число активных программ             (AVG_APPLS) = AUTOMATIC

 Максим.число открытых файлов БД на программу (MAXFILOP) = 32768



 Размер файла журнала (4 Кбайт)              (LOGFILSIZ) = 1024

 Число первичных файлов журнала             (LOGPRIMARY) = 13

 Число вторичных файлов журнала              (LOGSECOND) = 4

 Измененных путей к файлам журналов         (NEWLOGPATH) = 

 Путь к файлам журнала                                   = C:\DB2\NODE0000\SQL00001\SQLOGDIR\

 Путь журналов переполнения            (OVERFLOWLOGPATH) = 

 Путь журналов зеркальной копии          (MIRRORLOGPATH) = 

 Первый активный файл журнала                            = 

 Блокировать журнал при переполн.диска (BLK_LOG_DSK_FUL) = NO

 Процент макс.перв.простр.журнала у транзакции(MAX_LOG) =  0

 Число акт.файлов журнала на актив.ед.раб. (NUM_LOG_SPAN)= 0



 Счетчик принятий для группы                 (MINCOMMIT) = 1

 Процент исправ.файла журнала до мягк.контр.тчк (SOFTMAX)= 520

 Сохранение в журнале для восстанов.включено (LOGRETAIN) = OFF

 Обработчик пользов. для регистрации включен  (USEREXIT) = OFF



 Роль базы данных HADR                                   = STANDARD

 Имя локального хоста HADR             (HADR_LOCAL_HOST) = 

 Имя локальной службы HADR              (HADR_LOCAL_SVC) = 

 Имя удаленного хоста HADR            (HADR_REMOTE_HOST) = 

 Имя удаленной службы HADR             (HADR_REMOTE_SVC) = 

 Имя экземпляра HADR на удал. сервере (HADR_REMOTE_INST) = 

 Срок ожидания HADR                       (HADR_TIMEOUT) = 120

 Режим синхронизации записи в журнал HADR (HADR_SYNCMODE) = NEARSYNC

 Длительность окна для равноправного HADR (с) (HADR_PEER_WINDOW) = 0



 Первый метод архивирования журнала       (LOGARCHMETH1) = OFF

 Опции для logarchmeth1                    (LOGARCHOPT1) = 

 Второй метод архивирования журнала       (LOGARCHMETH2) = OFF

 Опции для logarchmeth2                    (LOGARCHOPT2) = 

 Путь архива журналов при отказе          (FAILARCHPATH) = 

 Число попыток архив.перед решен.об ошибке(NUMARCHRETRY) = 5

 Задержка попыток архивирования журнала (с)(ARCHRETRYDELAY) = 20

 Опции поставщика                            (VENDOROPT) = 



 Автоматический перезапуск разрешен        (AUTORESTART) = ON

 Время воссоздания и построение пересоздания индекса (INDEXREC) = SYSTEM (RESTART)

 Страниц журнала при построении индекса (LOGINDEXBUILD) = OFF

 Число сеансов loadrec по умолчанию    (DFT_LOADREC_SES) = 1

 Число резервных копий баз данных       (NUM_DB_BACKUPS) = 12

 Хранение хронологии для восстанов.(дни)(REC_HIS_RETENTN)= 366

 Автоудаление объектов восстановления (AUTO_DEL_REC_OBJ) = OFF



 Класс управления TSM                    (TSM_MGMTCLASS) = 

 Имя узла TSM                             (TSM_NODENAME) = 

 Владелец TSM                                (TSM_OWNER) = 

 Пароль TSM                               (TSM_PASSWORD) = 



 Автоматическое обслуживание                (AUTO_MAINT) = ON

   Автоматическое резервное копирование базы данных (AUTO_DB_BACKUP) = OFF

   Автоматическое обслуживание таблиц   (AUTO_TBL_MAINT) = ON

     Автоматический запуск runstats      (AUTO_RUNSTATS) = ON

       Автоматическая статистика оператора (AUTO_STATS_PROF) = OFF

     Автоматическое профилирование статистики (AUTO_STATS_PROF) = OFF

       Автоматическое изменение профиля  (AUTO_PROF_UPD) = OFF

     Автоматическая реорганизация           (AUTO_REORG) = OFF



 Символьные операции XML включены       (ENABLE_XMLCHAR) = YES

 Интервал сбора WLM (минут)            (WLM_COLLECT_INT) = 0
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37586623
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cumba,

Здравствуйте.

SNAPLOCK
SNAPLOCKWAIT
Убедитесь, что параметр экземпляра DFT_MON_LOCK = ON, иначе информация о блокировках не будет собираться.
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37586686
cumba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT AGENT_ID, LOCK_OBJECT_TYPE, LOCK_MODE, LOCK_STATUS

FROM SYSIBMADM.SNAPLOCK
WHERE DBPARTITIONNUM = 0

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
AGENT_ID             LOCK_OBJECT_TYPE   LOCK_MODE  LOCK_STATUS

-------------------- ------------------ ---------- -----------

                 388 INTERNALV_LOCK     S          GRNT       

                 388 INTERNALP_LOCK     S          GRNT       

                 388 TABLE_LOCK         IS         GRNT       

                 131 INTERNALV_LOCK     S          GRNT       

                 131 ROW_LOCK           X          GRNT       

                 131 INTERNALV_LOCK     S          GRNT       

                 131 ROW_LOCK           X          GRNT       

                 131 ROW_LOCK           X          GRNT       



это только небольшая часть

SELECT AGENT_ID, LOCK_MODE, LOCK_OBJECT_TYPE, AGENT_ID_HOLDING_LK, LOCK_MODE_REQUESTED
FROM SYSIBMADM.SNAPLOCKWAIT
WHERE DBPARTITIONNUM = 0

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
AGENT_ID             LOCK_MODE  LOCK_OBJECT_TYPE   AGENT_ID_HOLDING_LK  LOCK_MODE_REQUESTED

-------------------- ---------- ------------------ -------------------- -------------------

                 388 X          ROW_LOCK                             27 NS                 

                 131 X          ROW_LOCK                             27 NS                 

                 144 X          ROW_LOCK                             27 NS                 

                 551 X          ROW_LOCK                            489 X                  

                 143 X          ROW_LOCK                             27 NS                 

                 360 X          ROW_LOCK                             27 NS                 

                 906 X          ROW_LOCK                             27 NS                 

                1136 X          ROW_LOCK                             27 NS                 

                 115 X          ROW_LOCK                             27 X                  

                 726 X          ROW_LOCK                             27 NS                 

                 943 X          ROW_LOCK                             27 NS                 

                 389 X          ROW_LOCK                             27 NS                 
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37586708
cumba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По каким причинам они могут блокироваться (кроме пропущенного commit'a и reorg) если раньше все было нормально ?
Может есть какие-нибудь ограничения на количество сессий или транзакций?
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37586785
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cumbaПо каким причинам они могут блокироваться (кроме пропущенного commit'a и reorg) если раньше все было нормально ?
Может есть какие-нибудь ограничения на количество сессий или транзакций?
Берёте agent_id того, кто держит блокировку, и смотрите, что он делает в данный момент:
Код: plaintext
1.
2.
select *
from  sysibmadm.snapstmt 
where agent_id=27

Кроме того, для выяснения деталей о том, кто кого блокирует, вы можете:

1. Настроить Lock timeout reporting , установив, конечно, у сессий отличный от -1 locktimeout.

2. Имея работающий event monitor for deadlocks with details history (пример команды создания примедён по ссылке выше), SYSADM локально на сервере может по любому agent_id получать историю текущей транзакции (например, для agent_id = 27):
Код: plaintext
db2pd -db  dbname  -apinfo 27
где dbname - имя базы.

Event monitor for deadlocks, который по-умолчанию создаётся - без истории, и поэтому не подойдёт и может быть удалён.
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37586857
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cumba,

Наглядно посмотреть, что там кем блокируется и почему можно с помощью бесплатной db2mon утилитки ( http://www.db2mon.com/).
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37587098
cumba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С тем как посмотреть разобрался, спасибо. Но проблему это не решило. При коннекте к приложению (написана на Java(spring, hibernate и тп)(не я писал, да и вообще java не знаю )) вылетает ошибка (Transaction rolled back because it has been marked as rollback-only).

Может есть какие - нибудь настройки базы (соединения, блокировки) которые могут это исправить или это все таки ошибка в коде приложения независящие от базы (дня 3 назад все работало нормально) ?
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37587602
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cumba,

Вроде бы пишут про "a bug in spring transaction management", который не отдаёт более точную информацию о причинах rollback.
Поэтому стоит разбираться со стороны базы.

Это могут быть как deadlock'и, информацию о котором стоит поискать в db2diag.log (см. DIAGPATH по "get dbm cfg"), а также в дополнительных файлах там валяющихся, так и timeout'ы по обыкновенным блокировкам (см. LOCKTIMEOUT по "get db cfg").

Последнее вернее, если в приложении ничего не менялось и новых приложений не добавлялось - может данных больше стало, дольше обрабатываться стали, может проложение непонятно что посередь транзакции делает, бывает, что федеративный объект по каким-то причинам долго не отвечает. Если просто данных больше стало, и за заданное время сервер не справляется, то может помочь метод грубой силы - простое увеличение LOCKTIMEOUT (но в целом это неправильный подход, может привести к обратным результатам).


У db2mon'а помимо Lock dependency в основном окне и Locks по каждому соединению есть общий список блокировок (Monitor -> Locks или Сtrl-5).
Дёргаем функциональность в приложении, в db2mon делаем refresh данных, выбираем подозрительную блокировку, по правому клику мышой - Go to Application, там смотрим последнюю SQL операцию. Думаем, при необходимости повторяем.
Вообще говоря, db2mon ничего кроме того, что можно вытащить из снапшотов и административных вьюх, не выдаёт, но он делает все необходимые выборки единоразово, создавая общую логически завершённую картину, и представляет результат связно.

Теоретически проблема может быть и не связана с блокировками. В любом случае стоит внимательно поглядеть внутрь db2diag.log на момент возникновения ошибки.
...
Рейтинг: 0 / 0
заблокировались таблицы
    #37588348
cumbaС тем как посмотреть разобрался, спасибо. Но проблему это не решило. При коннекте к приложению (написана на Java(spring, hibernate и тп)(не я писал, да и вообще java не знаю )) вылетает ошибка (Transaction rolled back because it has been marked as rollback-only).
Откат транзакции может происходить по разным причинам, не факт что из за блокировки.
Само приложение (бизнес-логика) может пометить транзакцию как rollback-only, если при ее обработке возникли условия, при которых ее нельзя коммитить. В логе приложения или в логе используемого менеджера транзакций есть подробности о причинах "rollback-only"?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / заблокировались таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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