【问题标题】:does oracle always throw ora-00060 on deadlock?oracle 总是在死锁中抛出 ora-00060 吗?
【发布时间】:2014-12-23 21:34:06
【问题描述】:

是否存在 Oracle 不会在 db 死锁时抛出 ora-00060(在等待资源时检测到死锁)错误的情况?

我在多线程记录插入时遇到应用程序冻结问题,我想知道是什么原因造成的 我不确定我还能提供哪些其他相关信息,如有任何疑问,请询问。

【问题讨论】:

  • 一个不会抛出 ora-00060 的场景?任何未检测到死锁的情况,我猜 :) 但无论如何,如果您的应用程序冻结,我将首先查看会话的等待事件。

标签: oracle insert oracle11g deadlock database-deadlocks


【解决方案1】:

有时我觉得 Oracle 并没有在每次实际发生时都抛出死锁错误。话虽如此,如果您遇到多线程插入的锁,则会话更有可能暂时相互等待,而不是真正的死锁。

要确定您可以查询 v$session,特别注意 STATUS、BLOCKING_SESSION、WAIT_CLASS、EVENT、P1TEXT、P2TEXT 和 P3TEXT。这应该描绘出相互举行会议的情况以及原因。真正的死锁会导致会话 A 阻塞会话 B 和会话 B 阻塞会话 A,这种情况比较少见。

应用程序也有可能由于某些多线程故障而不是数据库故障而挂起。

【讨论】:

  • At times I had the felt that Oracle had not thrown deadlock errors for every single time it actually occured. ?你能从技术上解释一下吗?
  • 不幸的是,当它发生在客户身上时,我没有机会获得更多信息。下次发生这种情况时,我将使用 v$session 或 gv$session 来观察两个会话相互保持多长时间。
猜你喜欢
  • 2011-03-05
  • 2018-04-27
  • 2023-03-26
  • 1970-01-01
  • 2016-01-22
  • 2016-09-02
  • 2014-02-20
  • 2016-08-06
  • 1970-01-01
相关资源
最近更新 更多