oracle查询被锁定的表:
SELECT p.spid,
c.object_name,
b.session_id,
a.serial#,
b.oracle_username,
b.os_user_name
FROM v$process p, v$session a, v$locked_object b, all_objects c
WHERE p.addr = a.paddr
AND a.process = b.process
AND c.object_id = b.object_id;解除表的锁定:
DECLARE
S_CMD VARCHAR2(2000);
BEGIN
FOR X IN (SELECT p.spid,
c.object_name,
b.session_id,
a.serial#,
b.oracle_username,
b.os_user_name
FROM v$process p, v$session a, v$locked_object b, all_objects c
WHERE p.addr = a.paddr
AND a.process = b.process
AND c.object_id = b.object_id) LOOP
S_CMD := ''''||X.SESSION_ID||','||X.SERIAL#||'''';
BEGIN
execute immediate 'alter system kill session '||S_CMD;
exception
when others then
DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
end;
END LOOP;
END;
本文提供了一种在Oracle数据库中查询被锁定表的方法,并给出了相应的SQL语句。此外,还介绍了解除表锁定状态的具体步骤,通过PL/SQL块执行系统级别会话杀操作。
4万+

被折叠的 条评论
为什么被折叠?



