尝试更新sqlplus中的列值时遇到问题。
它基本上不会完成而只是挂起。我想知道是否还有强制删除oracle中的锁?
我注意到一个名为v $ locked_object的表,其中包含与我遇到的问题相关的注册ID。
希望我已经解释得这么好了。
提前感谢您的帮助!
答案 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)
可能还有其他人更新过同一张桌子但尚未提交。它甚至可能是你(在不同的工具或不同的会话中)。
摆脱锁定的最简单方法是在另一个会话中提交工作。