我可以更新一些表就好了,但某个表我不能用我的任何ASP.NET应用程序或SQLPLUS进行更新。这两个挂下去。我不得不强行退出SQLPLUS。我有运行一个无论在标准的OracleCommand对象更新statments:

cmd.ExecuteNonQuery();

但我也有ASP:绑定到一个GridView SqlDataSources。似乎没有任何工作。

有一个类似的问题在这里:甲骨文更新挂起。我有大概的了解的东西必须有某种此表上的锁,但我不知道如何删除它,甚至发现了这一问题。任何帮助,将不胜感激。

我运行Oracle 9i的EE 9.2。

有帮助吗?

解决方案

有机会,另一个会话具有未提交工作(即更新或删除)

您可以找到该会话(S),这可能是与...

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归因
不隶属于 StackOverflow
scroll top