我在尝试更新sqlplus中的列值时遇到了问题。
它基本上无法完成,只会挂起。我想知道是否有办法强制解除Oracle中的锁定?
我注意到一个名为v$locked_object的表,其中包含与我遇到问题相关的对象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。然后终止了该会话,锁定已被移除。
可能是有其他人更新了同一张表,但尚未提交。甚至可能是您在不同的工具或不同的会话中进行了更新。
摆脱锁定的最简单方法是在另一个会话中提交工作。