尝试更新 sqlplus 中的列值时遇到问题。
它基本上不会完成,只是挂起。我想知道是否有强制删除oracle中的锁?
我注意到一个名为 v$locked_object 的表确实包含与我遇到的问题相关的 onject ID。
希望我已经解释得足够好。
提前感谢您的帮助!
这将完全符合您的目的:
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#';
设法解决了这个问题。
我查看了 DBA_BLOCKERS 表并获得了会话 ID。然后终止会话并删除锁定。
可能,其他人已经更新了同一张表并且还没有提交。甚至可能是您(在不同的工具或不同的会话中)。
摆脱锁定的最简单方法是在另一个会话中提交工作。