我在oad的桌面上为oracle做了一个select for update语句,它对该表进行了锁定。
如何释放此锁定。 (我没有DBA访问权限)..
执行提交会自动释放该锁吗?
答案 0 :(得分:1)
是的,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