by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

4.2 enqueue 락이란?




2. enqueue 락이란?

enqueue 락은 우리가 흔하게 얘기하는 바로 그 lock을 말한다.
X$KSQEQ
kernel service enqueue object로서 오라클이 락을 관리하기 위해 사용하는 구조체
V$ENQUEUE_LOCK
뷰 쿼리의 내용을 확인해 보자.
SQL> select view_definition from v$fixed_view_definition
where view_name ='GV$ENQUEUE_LOCK';
SQL> select * from v$enqueue_lock;
Unable to render embedded object: File (worddavbad152bdb729c20f439c9ce6a08a0a3f.png) not found.
v$enqueue_lock은 다음의 테이블로 구성되어있다.

  • x$ksqeq (kernel service enqueue object)
  • x$ksuse (kernel service session info)
  • x$ksqrs (kernel service enqueue resource)

view의 컬럼 중 주요 컬럼은 다음과 같다.

  • ADDR: 락 state object의 주소
  • KADDR: 락 주소
  • LMODE: 락 소유 모드
  • REQUEST: 락 요청 모드
  • CTIME: 락 소유 또는 요청 시점부터 현재까지의 경과시간
  • BLOCK: 다른 락을 블로킹하는 지의 여부를 나타내는 블로킹 플래그
  • enqueue 락을 위한 주요 정보는 <LMODE-REQUEST-CTIME-BLOCK>

락 정보를 위한 메모리 구조에는 TYPE+ID1+ID2정보가 없기 때문에 다음과 같이 연결하여 보여준다.

  • x$ksqeq.ksqlkres=x$ksqrs.addr

Unable to render embedded object: File (worddava4ab77c015df41d548095d9dfdf3123e.png) not found.
X$KSQEQ(kernel service enqueue object)
트랜잭션 락(TX)및 DML락 (TM) 이 enqueue 대기 현상이 발생하는 경우 저장되는 구조이다. V$ENQUEUE_LOCK의 base fixed view이다.
X$KTCXB(kernel transaction control object )
트랜잭션 락(TX) 정보를 저장하는데 사용
V$TRANSACTION_ENQUEUE 뷰의 base 테이블
X$KTADM(kernel transaction access definition dml lock)
DML락(TM) 정보를 저장하는데 사용
[P120 예제]
1) 테스트용 테이블 생성 및 테스트 데이터 입력
Unable to render embedded object: File (worddav886b3449fdaba9e651b7879afc9e0e72.png) not found.
2) delete 진행
Unable to render embedded object: File (worddavc22902968ed4a2d9fddd1ed84469754f.png) not found.
3) V$RESOURCE 및 V$ENQUEUE_LOCK 뷰 확인
Unable to render embedded object: File (worddavc67f960a0e60ba58980576d9c7227352.png) not found.
<TM-31552-0> <TX-458764-56572> 2개의 리소스 생성 확인
Unable to render embedded object: File (worddav8403315900c074ad4ca7946b5e8f5567.png) not found.
하지만 해당 리소스가 사용하는 enqueue lock은 존재하지 않는다.
4) V$TRANSACTION_ENQUEUE view 확인
Unable to render embedded object: File (worddav2a23d37e519e45893d7fdffaa2c3578b.png) not found.
V$TRANSACTION_ENQUEUE를 통해 enqueue lock <TX-458764-56572>이 존재함을 확인할 수 있다.
--> view 생성 구문을 통해 내부에서 x$ktcxb가 사용되었음을 확인할 수 있다.
5) x$ktadm 확인
Unable to render embedded object: File (worddav5d5f5cc370a13dbab701f66c5c755316.png) not found.
<TM-31552-0> 를 사용하는 enqueue lock이 있음을 확인할 수 있다.
--> enqueue lock 정보를 x$ktadm에 저장함을 알 수 있다.
Unable to render embedded object: File (worddava3678fb7fa8a4f0f99e5b86176d77ff6.png) not found.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.