Library cache lock과 library cache pin 관련 설명은 밑에 여러번 언급을 하였으므로 ..

 

여기서는 단순히 Library cache lock과 library cache pin이 일어날 경우 모니터링 하는 쿼리를 만들어 보았다.

 

dba_kgllock : library cache 관련 lock , pin Holder, waiter 정보를 확인 할 수 있다.

x$kglob : library cache 에 Cache 되어 있는 Object에 대한 정보 확인 ( v$db_object_cache의 기본 테이블 )

v$session : 세션 정보를 가지고 있는 뷰

 

기본이 되는 테이블은 dba_kgllock 테이블이다.

이 테이블을 조회 함으로써 현재 library cache lock과 Pin 에 대한 lock 정보를 확인 해 볼 수 있다.

 

SELECT /*+ ORDERED */

       lo.kglnaobj AS object ,

       decode( ll.kgllkmod , 0 , ‘none’ , 1 , ‘null’ , 2 , ‘share’ , 3 , ‘exclusive’ , ll.kgllkmod ) AS CurrentLockMode ,

       decode( ll.kgllkreq , 0 , ‘none’ , 1 , ‘null’ , 2 , ‘share’ , 3 , ‘exclusive’ , ll.kgllkreq ) AS RequestLockMode ,

       ll.kgllktype Type ,

       s.schemaname HolderSchema,

       s.program HolderProgram,

       s.module HolderModule

FROM   dba_kgllock ll ,

       x$kglob lo ,

       v$session s

WHERE  ll.kgllkhdl = lo.kglhdadr

AND    ll.kgllkuse = s.saddr ;

 

위의 쿼리는 단순히 현재 library cache lock 이나 pin 관련 Holder나 waiter정보를 조회 하는 쿼리이다.

lock 인지 pin 인지 확인해 볼 려면  ll.kgllktype 컬럼값을 확인해 보면 됨.

 

실제 Wait이 발생하는 시점에서는 v$session_wait뷰를 조회 하다가 P1RAW값을 가지고 x$kglob 뷰의 kglhdadr과 조회해 보면 된다.

 

아니면 dba_kgllock 뷰에서 waiter가 0 이 아닌것을 조회 함으로써 같은 역활을 할 수 있다.

 

v$session_wait을 조회 하다가 P1RAW값을 이용하여 확인 하는 방법

SELECT kglnaown , kglnaobj

FROM   x$kglob

WHERE kglhdadr = ‘P1RAW값 ‘ ;

 

dba_kgllock를 조회 하면서 lock , pin 관련 모니터링

 

SELECT /*+ ORDERED */

       lo.kglnaobj AS object ,

       decode( ll.kgllkmod , 0 , ‘none’ , 1 , ‘null’ , 2 , ‘share’ , 3 , ‘exclusive’ , ll.kgllkmod ) AS CurrentLockMode ,

       decode( ll.kgllkreq , 0 , ‘none’ , 1 , ‘null’ , 2 , ‘share’ , 3 , ‘exclusive’ , ll.kgllkreq ) AS RequestLockMode ,

       ll.kgllktype Type ,

       s.schemaname HolderSchema,

       s.program HolderProgram,

       s.module HolderModule

FROM   dba_kgllock ll ,

       x$kglob lo ,

       v$session s

WHERE  ll.kgllkhdl = lo.kglhdadr

AND    ll.kgllkuse = s.saddr

AND    ll.kgllkreq  > 0 ;

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다