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

x3naxklr  于 2023-05-16  发布在  Oracle
关注(0)|答案(2)|浏览(125)

突然我的更新查询不执行了。我可以进行select查询,但当我尝试update记录时,数据库无限挂起。我甚至尝试从sql plus和什么也没有发生。

enyaitl3

enyaitl31#

对于同一组记录,很可能还有另一个打开的未提交事务,因此这些事务被锁定。
而且,最有可能的是,锁定了它们,在另一个事务中运行相同的UPDATE
只要提交/回滚你的事务,你应该没事。

6ljaweal

6ljaweal2#

此查询将显示谁阻止了您的更新。执行挂起的更新,然后在另一个会话中运行以下命令:

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中抄来的。

相关问题