DBAtlas · 数据库运维图谱

ORA-00060: Deadlock detected while waiting for resource(等待资源时检测到死锁)

Oracle

含义

两个或多个会话发生死锁,各自等待对方持有的资源。Oracle 检测到该循环后选择一个牺牲者,并回滚该会话的语句。

原因

以不同顺序获取行锁、不同事务交叉更新相同的行、未建索引的外键导致更新父表时加表锁,或在位图索引上并发执行 DML。

解决方法

检查 alert log 中引用的死锁 trace(图)文件,找出冲突的 SQL 语句和行。在应用中始终以相同顺序访问表/行。为外键列建立索引(未建索引的外键是典型的死锁原因)。保持事务简短并审查提交频率。在应用中捕获发生死锁的事务并重试。

在 DBAtlas 中打开 →

同一数据库的其他条目