突然我的更新查询不执行了。我可以进行select查询,但当我尝试update记录时,数据库无限挂起。我甚至尝试从sql plus和什么也没有发生。
enyaitl31#
对于同一组记录,很可能还有另一个打开的未提交事务,因此这些事务被锁定。而且,最有可能的是,您锁定了它们,在另一个事务中运行相同的UPDATE。只要提交/回滚你的事务,你应该没事。
UPDATE
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中抄来的。
2条答案
按热度按时间enyaitl31#
对于同一组记录,很可能还有另一个打开的未提交事务,因此这些事务被锁定。
而且,最有可能的是,您锁定了它们,在另一个事务中运行相同的
UPDATE
。只要提交/回滚你的事务,你应该没事。
6ljaweal2#
此查询将显示谁阻止了您的更新。执行挂起的更新,然后在另一个会话中运行以下命令:
编辑:
为了正确地描述这个属性,看起来我是从ORAFAQ中抄来的。