Oracle非外键列上的死锁

问题描述 投票:0回答:1
  1. 我们有一个表A,它在Oracle数据库中有一列X.
  2. X列是一个数字列,它不是任何表的外键。
  3. 我们的应用程序刷新数据(删除旧数据,获取新数据,查询X列的最大值,然后在表A中插入数据)。
  4. 更新说明:我们在应用程序日志中看到了死锁。准确地说Caused by: java.sql.SQLException: ORA-00060: deadlock detected while waiting for resource.
  5. 我们知道这个应用程序使用spring和hibernate。查询是在HQL中。

有没有人遇到过这种情况?鉴于列X没有任何外键约束,我们真的很难过为什么死锁应该出现在该列上。

感谢您的帮助和投入。

oracle deadlock
1个回答
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列上创建索引会发生什么?

© www.soinside.com 2019 - 2024. All rights reserved.