在 toad for oracle 中释放 table 上的锁
Releasing a lock on a table in toad for oracle
我在 toad for oracle 的 table 上做了一个 select for update 语句,它锁定了那个 table。
如何解除这个锁。 (我没有 DBA 权限)..
执行提交会自动释放该锁吗?
是的,COMMIT
或 ROLLBACK
都会释放锁。
如果table在您发出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
我在 toad for oracle 的 table 上做了一个 select for update 语句,它锁定了那个 table。
如何解除这个锁。 (我没有 DBA 权限)..
执行提交会自动释放该锁吗?
是的,COMMIT
或 ROLLBACK
都会释放锁。
如果table在您发出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