Oracle-查找发生死锁的表

Oracle-查找发生死锁的表,oracle,hibernate,Oracle,Hibernate,我的Oracle数据库中出现死锁。当我同时从同一个表中删除两个实体时,就会发生死锁(ORA-00060)。我怎样才能知道锁是放在哪张桌子上的 到目前为止,我所做的是: 我获得了一个包含死锁图的跟踪文件,因此问题1是:我是否可以使用死锁图中的资源名来标识设置了锁的表?怎么用?资源名称的格式如下:TM-000168D7-00000000-00000005-00000000 外键上缺少索引似乎是这种死锁最常见的来源,所以我检查了是否有一些缺少索引,但没有找到。但是,这个模式仍然非常复杂,所以我可以忽略

我的Oracle数据库中出现死锁。当我同时从同一个表中删除两个实体时,就会发生死锁(ORA-00060)。我怎样才能知道锁是放在哪张桌子上的

到目前为止,我所做的是:

  • 我获得了一个包含死锁图的跟踪文件,因此问题1是:我是否可以使用死锁图中的资源名来标识设置了锁的表?怎么用?资源名称的格式如下:TM-000168D7-00000000-00000005-00000000
  • 外键上缺少索引似乎是这种死锁最常见的来源,所以我检查了是否有一些缺少索引,但没有找到。但是,这个模式仍然非常复杂,所以我可以忽略它

  • 有什么提示或建议吗?

    有很多在线资源可以帮助您了解死锁

    “TM”是一个事务或DML排队(锁),因此在提交之前,您可能有一个运行时间比它应该运行的时间长的事务

    以下是查找未索引外键的脚本:

    select cc.owner, cc.table_name, cc.column_name, cc.position   
    from dba_cons_columns cc
    where 
     cc.owner not in ('SYS','SYSTEM')
     and position is not null
    minus
    select i.index_owner, i.table_name, i.column_name, i.column_position
    from dba_ind_columns i
    where 
     i.index_owner not in ('SYS','SYSTEM')
    

    我在某处读过他的文章-你找到与000168D7相关的专栏了吗?它有外键吗?