Find Holder of mutex. (cursor: pin s wait on x)

게시 날짜: 2012/05/05, 카테고리: ADMIN, ORACLE
태그:, ,

오라클 데이터베이스를 운영하다보면 종종 cursor: pin S wait on X 이벤트가 계속 발생하는 경우가 있다. 그저 그때 대처할 수 있는 거라곤 해당 대기 이벤트들을 KILL 해주는게 전부이지만 근본적으로 해당 mutex 를 가지고 놓아주지 않는 세션을 잡아서 KILL 해 주는게 제일 좋다.

그러면 mutex 를 잡고있는 세션을 어떻게 찾을 수 있을까? 굉장히 간단한 쿼리로 확인해 볼 수 있다.

SELECT P2RAW, TO_NUMBER(SUBSTR(TO_CHAR((RAWTOHEX(‘P2RAW’)),1,8),’XXXXXXXX’) SID
FROM V$SESSION
WHERE EVENT = ‘cursor: pin S wait on X’;

이 쿼리의 결과, 두번째 컬럼인 SID 가 바로 mutex 를 소유하고 풀어주지 않는 세션이다. 해당 세션이 무슨일을 하고 있는지 트레이스를 걸어 확인하던가 하여 해당 세션을 KILL 해주면 그 뒤에 정상적인 세션들은 이상없이 진행되게 된다.

참고로 저 쿼리는 64비트 시스템일 경우이다. 64비트 시스템에서는 8자리를, 32비트 시스템에서는 4자리를 차지한다고 하니 참고하도록 하자. 해당 내용은 오라클 메타링크 786507.1 에서 확인 가능하다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중