繁体   English   中英

某些表的Oracle UPDATE无限期挂起

[英]Oracle UPDATEs to Certain Table Hang Indefinitely

我可以很好地更新某些表,但是我的ASP.NET应用程序或SQLPLUS无法更新某些表。 两者都无限期地挂起。 我必须强行退出SQLPLUS。 我在运行以下命令的标准OracleCommand对象中都有更新语句:

cmd.ExecuteNonQuery();

但我也有asp:SqlDataSources绑定到GridView。 似乎没有任何作用。

这里有一个类似的问题: Oracle更新挂起 我有一个粗略的想法,就是在此表上必须有某种形式的锁,但是我不知道如何删除它,甚至无法找到它。 任何帮助将不胜感激。

我正在运行Oracle 9i EE 9.2。

另一个会话可能有未完成的工作(即UPDATE或DELETE)

您可以找到这可能与哪个会话...

select s1.username || '@' || s1.machine    || ' ( SID=' || s1.sid || ' ) is blocking '
  || s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status
  from v$lock l1, v$session s1, v$lock l2, v$session s2
  where s1.sid=l1.sid and s2.sid=l2.sid
  and l1.BLOCK=1 and l2.request > 0
  and l1.id1 = l2.id1
  and l2.id2 = l2.id2

编辑:

您可能在某处缺少COMMIT的地方有大量的代码。

检查V $ SESSION中有问题的会话ID,看看是否可以找出可能的代码。

为了帮助您找到红色代码(假设是这样),您可以使用...查找会话中运行的最后一个SQL命令。

select *
from   v_$sqltext, v_$session
where  v_$session.prev_hash_value = v_$sqltext.hash_value
and    [some filter on v_$session]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM