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

enq: TX - row lock contention: 대기: 다른 트랜잭션이 보유한 행 수준 락에 세션이 블로킹됨

Oracle

의미

세션이 다른 트랜잭션이 보유한 행 락의 해제를 기다리고 있다. 전형적인 애플리케이션 수준 락 대기 이벤트이다.

원인

같은 행을 갱신하려는 동시 트랜잭션, 오랫동안 커밋되지 않은 트랜잭션, 인덱스 없는 외래 키로 인한 광범위한 락, 또는 순차 키에 대한 집중(hot block).

해결 방법

블로킹 세션과 블로킹된 세션을 찾는다: SELECT * FROM v$session WHERE blocking_session IS NOT NULL; v$lock과 대조한다. 긴 트랜잭션이 근본 원인이라면 커밋 전략을 검토한다. 외래 키 컬럼에 인덱스를 생성한다. hot row에 대해서는 설계(sequence, hash)를 재검토한다. 필요하면 블로킹 세션을 종료한다.

DBAtlas에서 열기 →

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