Cursor_Sharing

  • CURSOR_SHARING 파라미터는 SQL문 조건절에 있는 상수 값들을 변수로 전환시켜 파싱함으로써 커서를 공유할 수 있도록 한다.
  • 사용법

Property	Description
Parameter type	String
Syntax	        CURSOR_SHARING = { SIMILAR | EXACT | FORCE }
Default value	EXACT
Modifiable	ALTER SESSION, ALTER SYSTEM
Basic	        No

    • FORCE :리터럴 값을 바인드로 변환하면서 동일한 SQL문에 대해서 단일계획만을 수립
    • SIMILAR :리터럴 값을 바인드로 변환하면서 모든 리터럴 값에 대한 실행계획을 확인하므로 동일한 SQL문이라고 하더라도 여러 개의 실행계획이 수립될 수 있음.
    • EXACT :리터럴 값을 모두 하드파싱함. 대소문자, 공백, 비교 상수값이 조금만 달라도 공유불가
  • 바인드 변수 사용원칙을 잘 지키지 않아 시스템 정상가동이 어려운 경우가 있다. 그럴 때 라이브러리 캐시 경합을 일시적으로 해결하기 위해 cursor_sharing 파라미터를 변경하는 것을 고려해 볼 수 있다.
  • 하지만, 이 옵션을 영구적으로 사용할 목적으로 적용해서는 안 된다. 이 옵션은 Shared Pool과 라이브러리 캐시 경합을 줄이는 데는 분명 효과를 보겠지만 기존 실행이 틀어져 이전보다 더 느리게 수행되는 쿼리들이 속출하게 될 가능성이 높다.

문서에 대하여

  • 최초작성자 : 오정희
  • 최초작성일 : 2010년 1월 18일
  • 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
  • {*}이 문서의 내용은 (주)비투엔컬설팅에서 출간한 '오라클 성능 고도화 원리와 해법I'를 참고하였습니다.*