Oracle非外键列上的死锁

时间:2017-12-15 18:34:10

标签: oracle deadlock

  1. 我们有一个表 A ,在Oracle数据库中有一个 X 列。
  2. X 列是一个数字列,它是 NOT 任何表的外键。
  3. 我们的应用程序会刷新数据(删除旧的 数据,获取新数据,查询列X的最大值,然后 在表A)中插入数据。
  4. 更新说明:我们在应用程序日志中看到了死锁。成为 精确Caused by: java.sql.SQLException: ORA-00060: deadlock detected while waiting for resource.
  5. 我们知道这个应用程序使用spring和hibernate。查询是在HQL中。
  6. 有没有人遇到过这种情况?鉴于列 X 没有任何外键约束,我们真的很难过为什么会在该列上出现死锁。

    感谢您的帮助和投入。

1 个答案:

答案 0 :(得分:0)

截至4:你是什么意思“似乎甲骨文正在发现死锁”?有,或者不是僵局(类似于怀孕的东西 - 你不能“只是有点怀孕” - 无论你是,或者你不是)。

您是否查询过V $ LOCKED_OBJECT?这样的查询可能会有所帮助:

select
  o.owner,
  o.object_name,
  o.object_type
from
  v$locked_object l ,
  v$session s,
  dba_objects o
where l.object_id = o.object_id
  and s.sid = l.session_id;

它会返回什么吗?

此外,是什么让你认为存在僵局?那里有错误吗?如果是这样,哪一个?

最后,如果在A表的X列上创建索引会发生什么?