태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Cursor Pin 경합과 관련해서 반드시 읽어야 할 Metalink Note

오라클 2009.09.01 14:42
Oracle 10g부터 cursor: pin ... 과 같은 이름의 대기 이벤트가 많이 관찰됩니다. Mutex가 동기화 객체로 사용되면서 나타난 현상인데, 이 Mutex의 문제는 Holder를 관찰하기가 쉽지 않다는 것입니다. 아쉽게도 Maxgauge 같은 모니터링 툴에서도 Mutex Holder는 제공하지 않습니다.

하지만 아래 Metalink Note를 읽어보면 의외로 쉽게 Mutex Holder를 찾을 수 있다는 것을 알 수 있습니다.

문서 ID: 786507.1
제목: HOW TO FIND BLOCKING SESSION FOR MUTEX WAIT EVENT cursor: pin S wait on X
Metalink 계정이 없으신 분들을 위해 간략하게 스크립트만 소개하면 다음과 같습니다(노트 내용을 Copy & Paste하는 것을 불법입니다).

-- 64비트 시스템에서는 8자리, 32비트 시스템에서는 4자리를 취한다.
SELECT p2raw
,to_number(substr(to_char(rawtohex(p2raw)), 1, 8), 'XXXXXXXX') sid
FROM v$session
WHERE event = 'cursor: pin S wait on X';

P2RAW               SID
----------------    ---
0000001F00000000     31 

31은 첫 8자리 0000001F 값의 10진수 값입니다. 즉 현재 Holder가 31번 세션이라는 의미입니다. Maxgauge와 같이 Active Session 목록과 대기 이벤트 목록을 저장하는 모니터링 툴에서는 Holder 세션을 위와 같이 손쉽게 찾아낼 수가 있겠네요.

물론 AWR에서도 동일하게 사용 가능합니다.

11g부터는 V$SESSION.BLOCKING_SESSION 컬럼에 Holder 정보가 기록됩니다. 대단히 좋아졌습니다.

하지만 애석하게도 진짜 문제는 Holder 세션을 찾고난 후입니다. :)

Trackbacks 2 : Comment 0

Write a comment

티스토리 툴바