24

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

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

我注意到一个名为 v$locked_object 的表确实包含与我遇到的问题相关的 onject ID。

希望我已经解释得足够好。

提前感谢您的帮助!

4

3 回答 3

65

这将完全符合您的目的:

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#';
于 2012-12-12T18:06:04.947 回答
1

设法解决了这个问题。

我查看了 DBA_BLOCKERS 表并获得了会话 ID。然后终止会话并删除锁定。

于 2012-12-12T18:05:06.003 回答
0

可能,其他人已经更新了同一张表并且还没有提交。甚至可能是您(在不同的工具或不同的会话中)。

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

于 2012-12-12T17:52:51.060 回答