Да, либо COMMIT
, либо ROLLBACK
освободит замок.
Если стол по-прежнему заблокирован после того, как вы выпустили ROLLBACK
, это не заблокирован вами. Вот запрос, который я использую, чтобы определить, кто ждет кого. Есть много других способов сделать это, но это работает для меня.
SELECT s.SID,
s.serial#,
s.blocking_session,
s.final_blocking_session,
s.event,
s.module,
s.action,
s.sql_id,
o.NAME locked_object,
-- This is commented out because sometimes you'll get an invalid row id. So I only put it in when I need it
-- CASE
-- WHEN s.row_wait_obj# <> -1 THEN DBMS_ROWID.rowid_create (1,
-- s.row_wait_obj#,
-- s.row_wait_file#,
-- s.row_wait_block#,
-- s.row_wait_row#)
-- ELSE NULL
-- END locked_row_id,
s.wait_class,
s.seconds_in_wait,
s.state,
s.osuser,
s.client_identifier,
sq.sql_text,
sq.sql_fulltext
FROM v$session s,
SYS.obj$ o,
v$sql sq
WHERE ( blocking_session IS NOT NULL
OR SID IN (SELECT blocking_session
FROM v$session))
AND o.obj#(+) = s.row_wait_obj#
and sq.sql_id = s.sql_id
Я действительно попробовал фиксацию и откат .. но не убил эту блокировку на этом столе. Может быть, потому, что я выполнил select ... для обновления .. но никогда не обновил запись? .. – psj01
thats weird .. потому что у меня все еще были блокировки там даже после откат. Я использовал браузер сеанса и на вкладке блокировок, чтобы блокировать оба под моим именем. один был блокировкой DHL (ROW-X (SX), а другой был Transcaction (эксклюзивный). Под владельцем он сказал, что WMSADMIN (у меня нет админ-привилегий) – psj01
, кто когда-либо был владельцем .. им нужно сделать фиксацию/откат ... возможно? .. – psj01