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

ORA-02049: Timeout: distributed transaction waiting for lock(分散トランザクションのロック待機タイムアウト)

Oracle

意味

分散トランザクションがリモートデータベース上のロックを待つ間に DISTRIBUTED_LOCK_TIMEOUT を超過した。トランザクションはタイムアウトした。

原因

データベースリンク経由で実行中のトランザクションがリモート側のロック中の行を待っている。リモートセッションの長いトランザクション、ネットワーク遅延、または両端で保持される競合ロック。

対処方法

リモートデータベース上のブロッキングロックとセッションを特定して解消する (v$lock、v$session)。分散トランザクションは短く保ち、必要なロックはできるだけ遅く取得する。必要ならワークロードに応じて DISTRIBUTED_LOCK_TIMEOUT を増やす (SPFILE、再起動が必要)。インダウト分散トランザクションは DBA_2PC_PENDING ビューを調べ、必要なら手動で解決する。

DBAtlas で開く →

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