Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
21.12.2011, 12:05
|
|||
|---|---|---|---|
|
|||
заблокировались таблицы |
|||
|
#18+
Все привет! Есть приложение которое работает с базой. раньше было все нормально, но теперь стали блокироваться таблицы. Можно где-нибудь посмотреть блокировки, какие таблицы заблокированы, кем? И из за чего появилась эта проблема и как её решить ? 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2011, 12:36
|
|||
|---|---|---|---|
|
|||
заблокировались таблицы |
|||
|
#18+
cumba, Здравствуйте. SNAPLOCK SNAPLOCKWAIT Убедитесь, что параметр экземпляра DFT_MON_LOCK = ON, иначе информация о блокировках не будет собираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2011, 12:58
|
|||
|---|---|---|---|
|
|||
заблокировались таблицы |
|||
|
#18+
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. это только небольшая часть 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2011, 13:09
|
|||
|---|---|---|---|
|
|||
заблокировались таблицы |
|||
|
#18+
По каким причинам они могут блокироваться (кроме пропущенного commit'a и reorg) если раньше все было нормально ? Может есть какие-нибудь ограничения на количество сессий или транзакций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2011, 13:38
|
|||
|---|---|---|---|
|
|||
заблокировались таблицы |
|||
|
#18+
cumbaПо каким причинам они могут блокироваться (кроме пропущенного commit'a и reorg) если раньше все было нормально ? Может есть какие-нибудь ограничения на количество сессий или транзакций? Берёте agent_id того, кто держит блокировку, и смотрите, что он делает в данный момент: Код: plaintext 1. 2. Кроме того, для выяснения деталей о том, кто кого блокирует, вы можете: 1. Настроить Lock timeout reporting , установив, конечно, у сессий отличный от -1 locktimeout. 2. Имея работающий event monitor for deadlocks with details history (пример команды создания примедён по ссылке выше), SYSADM локально на сервере может по любому agent_id получать историю текущей транзакции (например, для agent_id = 27): Код: plaintext Event monitor for deadlocks, который по-умолчанию создаётся - без истории, и поэтому не подойдёт и может быть удалён. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2011, 14:07
|
|||
|---|---|---|---|
заблокировались таблицы |
|||
|
#18+
cumba, Наглядно посмотреть, что там кем блокируется и почему можно с помощью бесплатной db2mon утилитки ( http://www.db2mon.com/). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2011, 15:30
|
|||
|---|---|---|---|
|
|||
заблокировались таблицы |
|||
|
#18+
С тем как посмотреть разобрался, спасибо. Но проблему это не решило. При коннекте к приложению (написана на Java(spring, hibernate и тп)(не я писал, да и вообще java не знаю )) вылетает ошибка (Transaction rolled back because it has been marked as rollback-only). Может есть какие - нибудь настройки базы (соединения, блокировки) которые могут это исправить или это все таки ошибка в коде приложения независящие от базы (дня 3 назад все работало нормально) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.12.2011, 18:42
|
|||
|---|---|---|---|
заблокировались таблицы |
|||
|
#18+
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 на момент возникновения ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.12.2011, 10:27
|
|||
|---|---|---|---|
|
|||
заблокировались таблицы |
|||
|
#18+
cumbaС тем как посмотреть разобрался, спасибо. Но проблему это не решило. При коннекте к приложению (написана на Java(spring, hibernate и тп)(не я писал, да и вообще java не знаю )) вылетает ошибка (Transaction rolled back because it has been marked as rollback-only). Откат транзакции может происходить по разным причинам, не факт что из за блокировки. Само приложение (бизнес-логика) может пометить транзакцию как rollback-only, если при ее обработке возникли условия, при которых ее нельзя коммитить. В логе приложения или в логе используемого менеджера транзакций есть подробности о причинах "rollback-only"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=43&tablet=1&tid=1601977]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 16ms |
| total: | 260ms |

| 0 / 0 |
