Oracle数据库在UPDATE查询中无限悬挂

时间:2011-09-21 14:43:59

标签: sql oracle transactions oracle11g

突然我的更新查询没有执行。我可以进行选择查询,但当我尝试更新记录时,数据库会无限期挂起。我甚至尝试从sql plus,没有任何反应。

2 个答案:

答案 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回来了一段时间。