DBAtlas · データベース運用アトラス

ORA-00060: Deadlock detected while waiting for resource(リソース待機中にデッドロックを検出)

Oracle

意味

2 つ以上のセッションが互いに相手の保持するリソースを待ち、デッドロック状態になっている。Oracle はこの循環を検出して犠牲者を選び、そのセッションの文をロールバックする。

原因

異なる順序で取得された行ロック、異なるトランザクションによる同じ行の交差更新、インデックスのない外部キーに起因する親テーブル更新時のテーブルロック、またはビットマップインデックスへの同時 DML。

対処方法

アラートログに記録されたデッドロックトレース (グラフ) ファイルを調べ、競合している SQL 文と行を特定する。アプリケーションでは常に同じ順序でテーブル/行にアクセスする。外部キー列にインデックスを作成する (インデックスのない FK は典型的なデッドロック原因)。トランザクションを短く保ち、コミット頻度を見直す。デッドロックになったトランザクションをアプリケーションで捕捉して再試行する。

DBAtlas で開く →

同じデータベースの他の項目