突然我的更新查询没有执行。我可以进行选择查询,但当我尝试更新记录时,数据库会无限期挂起。我甚至尝试从sql plus,没有任何反应。
答案 0 :(得分:25)
对于同一组记录,您很可能还有另一个未提交的开放事务,因此它们会针对该事务锁定。
而且,很可能你锁定了他们,在另一个交易中运行相同的UPDATE
。
只需提交/回滚您的交易,您应该没问题。
答案 1 :(得分:15)
此查询将显示阻止更新的人员。执行挂起的更新,然后在另一个会话中运行:
select s1.username || '@' || s1.machine ||
' ( SID=' || s1.sid || ' ) is blocking '
|| s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status
from v$lock l1 join v$lock l2 on (l1.id1 = l2.id1 and l2.id2 = l2.id2)
JOIN v$session s1 ON (s1.sid = l1.sid)
JOIN v$session s2 ON (s2.sid = l2.sid)
WHERE l1.BLOCK=1 and l2.request > 0;
编辑:
为了正确归因于此,看起来我在ORAFAQ回来了一段时间。