DBAtlas · 데이터베이스 운영 아틀라스

ORA-02049: Timeout: distributed transaction waiting for lock

Oracle

의미

분산 트랜잭션이 원격 데이터베이스의 락을 기다리는 동안 DISTRIBUTED_LOCK_TIMEOUT을 초과했다. 트랜잭션이 타임아웃되었다.

원인

database link를 통해 실행되는 트랜잭션이 원격 측의 잠긴 행을 기다림. 원격 세션의 긴 트랜잭션, 네트워크 지연, 또는 양쪽에서 보유한 충돌 락.

해결 방법

원격 데이터베이스에서 블로킹 락과 세션을 찾아 해결한다(v$lock, v$session). 분산 트랜잭션은 짧게 유지하고 필요한 락은 가능한 한 늦게 획득한다. 필요하면 워크로드에 맞게 DISTRIBUTED_LOCK_TIMEOUT을 늘린다(SPFILE, 재시작 필요). in-doubt 분산 트랜잭션은 DBA_2PC_PENDING 뷰를 확인하고 필요하면 수동으로 해결한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목