突然间我的更新查询无法执行。我可以执行选择查询,但当我尝试更新记录时,数据库会无限挂起。我甚至尝试从sql plus执行,也没有任何反应。
突然间我的更新查询无法执行。我可以执行选择查询,但当我尝试更新记录时,数据库会无限挂起。我甚至尝试从sql plus执行,也没有任何反应。
很可能你有另一个未提交的事务正在处理相同记录集,因此它们被该事务锁定。
而且,很可能是UPDATE
在另一个事务中执行时被你锁定了相同的记录。
请提交或回滚你的事务,这样应该就没问题了。
这个查询将显示谁阻塞了你的更新。 执行导致挂起的更新,然后在另一个会话中运行以下查询:
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 cribbed 这个一段时间。