删除Oracle 10中的锁

时间:2012-12-12 17:49:43

标签: sql oracle sqlplus

尝试更新sqlplus中的列值时遇到问题。

它基本上不会完成而只是挂起。我想知道是否还有强制删除oracle中的锁?

我注意到一个名为v $ locked_object的表,其中包含与我遇到的问题相关的注册ID。

希望我已经解释得这么好了。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:53)

这完全符合您的目的:

SELECT SESSION_ID FROM DBA_DML_LOCKS WHERE NAME = <TABLE_NAME>;

使用SESSION_ID通过以下声明查找相应的SERIAL#

SELECT SID, SERIAL# FROM V$SESSION WHERE SID IN (
    SELECT SESSION_ID FROM DBA_DML_LOCKS WHERE NAME = <TABLE_NAME>
);

找到有问题的元组SID, SERIAL#并将其释放如下:

ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

答案 1 :(得分:1)

管理以解决此问题。

我查看了DBA_BLOCKERS表并获得了会话ID。然后杀死了会话并取消了锁。

答案 2 :(得分:0)

可能还有其他人更新过同一张桌子但尚未提交。它甚至可能是你(在不同的工具或不同的会话中)。

摆脱锁定的最简单方法是在另一个会话中提交工作。