Как найти кто заблокировал запись в таблице?

WWWeb
Дата: 18.03.2011 17:07:08
Здравствуйте.
Как получить номер сессии того кто заблокировал в таблице запись?


Спасибо.
tru55
Дата: 18.03.2011 17:08:41
v$lock
Shtock
Дата: 18.03.2011 17:13:43
select sid, o.object_name
from v$lock l
inner join all_objects o on o.OBJECT_ID = l.id1
в лок
Дата: 18.03.2011 17:14:29
WWWeb
Здравствуйте.
Как получить номер сессии того кто заблокировал в таблице запись?


Спасибо.



Нужно сначала в другой сессии выполнить запрос, например select for update для той строки.
И потом уже по v$lock можно узнать, кто держит эту сессию.
WWWeb
Дата: 18.03.2011 17:16:59
Я вижу номер сессии, но как увидеть, какой объект ею заблокирован?
tru55
Дата: 18.03.2011 17:18:14
WWWeb
Я вижу номер сессии, но как увидеть, какой объект ею заблокирован?

id1 = id object
-2-
Дата: 18.03.2011 17:20:51
в лок
Нужно сначала в другой сессии выполнить запрос, например select for update для той строки.
Ведь в вопросе не указано "кто заблокировал в таблице конкретную запись?"
А если сессия зависла, то в более/менее современных версиях v$lock анализировать уже не надо - v$session куда информативнее.
в лок
Дата: 18.03.2011 17:22:08
tru55
WWWeb
Я вижу номер сессии, но как увидеть, какой объект ею заблокирован?

id1 = id object


Для блокировки строки??
в лок
Дата: 18.03.2011 17:24:31
-2-
в лок
Нужно сначала в другой сессии выполнить запрос, например select for update для той строки.
Ведь в вопросе не указано "кто заблокировал в таблице конкретную запись?"
А если сессия зависла, то в более/менее современных версиях v$lock анализировать уже не надо - v$session куда информативнее.



Если неизвестна конкретная запись, значит придётся блокировать всю таблицу.
WWWeb
Дата: 18.03.2011 17:37:13
в лок,

конкретная запись известна