SQL>CREATE TABLE IT (s1 varchar2(10)); SQL>INSERT INTO IT VALUES ('test'); SQL>SELECT * FROM IT; S1 ---------- test
В одной сессии выполним выборку для обновления, но без commit:
SELECT s1 FROM it WHERE s1 = 'test' FOR UPDATE nowait;
Аналогичный запрос выполним в другой сессии и получим результат, ошибку:
ORA-00054: ресурс занят и задано его получение с параметром NOWIAT, либо истекло время ожидания SELECT DISTINCT l.sid FROM v$lock l, v$session s WHERE l.id1 = (SELECT do.OBJECT_ID FROM dba_objects do WHERE do.OBJECT_NAME = 'IT')Результатом будет SID удерживающей сессии
Комментариев нет:
Отправить комментарий