h2.Enq: UL - Contention, PL/SQL lock Timer
- DBMS_LOCK 패키지를 사용하면 사용자가 임의의 가상적인 자원에 대해 락 설정 가능
- DML에 의해 발생하는 락의 경우 반드시 물리적인 자원(테이블/트랜잭션/세그먼트 등)
을 필요로 하지만, DBMS_LOCK 패키지를 사용할 경우에는 이런 제한이 없다. - DBMS_LOCK 패키지를 이용해 획득하는 락을 UL(User-defined Lock)락이라 부른다.
UL락을 장시간 보유함으로써 동시성 문제를 일으키고 있다면 세션을 강제로
종료시키는 것 외에는 대안이 없다. DBMS_LOCK.REQUEST 함수 사용시 가능하면
RELEASE_ON_COMMIT 옵셥을 사용해서 불필요하게 락을 보유하지 않도록 하는 것이 좋다. - 이 옵션을 사용하면 커밋이나 롤백이 발생하면 해당 트랜잭션이 보유하던
UL락을 자동으로 해제 한다.