即使我没有使用任何明确的表锁,并且我的隔离级别设置为READ COMMITTED
,我得到此错误Message: ORA-00060: deadlock detected while waiting for resource
。Oracle死锁没有显式锁定和读提交隔离级别,为什么?
我使用默认传播的弹簧TransactionTemplate
上的多个线程。在我的业务逻辑中,数据是分开的,因此两个事务永远不会有相同的一组数据。因此,我不需要SERIALIZABLE
为什么Oracle可以检测到死锁?僵尸在这个星座是不可能的,或者我错过了什么?如果我没有遗漏任何东西,那么我的分离算法一定是错的,对吧?或者可以有其他解释吗?
当Oracle检测到死锁时,会生成死锁跟踪文件。你能得到这个文件吗(或者要求你的DBA发送给你)?有很多可能性,但死锁跟踪文件会告诉你到底发生了什么。 –