SESSION CACHED CURSORS

EXEM Knowledge Base

Jump to: navigation, 찾기

목차

[편집] 기본 정보

[편집] Parameter 정보


Syntax SESSION_CACHED_CURSORS
설정방법
  • Parameter File
  • ALTER SESSION SET SESSION_CACHED_CURSORS = 100;
  • ALTER SYSTEM SET SESSION_CACHED_CURSORS = 100;
버전 및 기본값
9iR2 10gR1 10gR2 11g
0 0 0 0

[편집] 설명

SESSION_CACHED_CURSORS 파라미터 값이 0보다 크면 Session Cursor Caching 기능이 사용된다. Session Cursor Caching 기능이란 하나의 Session 내에서 세번 이상 수행된 SQL Statement를 PGA 영역에 Cache하는 것을 의미한다.

일반적으로 Soft Parse가 왕성하고 한번에 많은 수의 Cursor를 사용하는 Application에서는 SESSION_CACHED_CURSORS 파라미터의 값을 크게 함으로써 library cache 래치 경합을 줄일 수 있다.

[편집] 참고 사항

[편집] 높은 SESSION_CACHED_CURSORS 값과 Shared Pool Fragmentation

Session Cursor Caching에 의해 PGA에 Cache된 Cursor는 다음과 같은 방법으로 Shared Pool에 Pin된다.

  1. Cursor를 구성하는 Heap0(Cursor 기본 정보)은 Pin된다.
  2. Cursor를 구성하는 Heap6(Cursor의 실행 계획 정보)는 Pin되지 않는다.

Pin된 영역은 Flush되지 않는다. 따라서 Session Curors Caching에 의해 Cache된 Cursor의 기본 정보는 Shared Pool에 계속 상주하게 된다. 이런 이유 때문에 Cache된 Cursor에 대해서는 Shared Pool의 특정 영역으로 직접 Access가 가능하고 그 만큼 library cache 래치를 점유하는 시간이 줄어든다. 반면 이렇게 Cache된 Cursor의 개수가 지나치게 많으면 그만큼 Flush되지 않는 Cursor(Heap0)의 수가 증가한다. 따라서 Shared Pool의 Fragmentation 현상이 발생할 수 있다.

이런 이유 때문에 Hard Parse가 왕성한 시스템에서는 Flush가 원활하게 이루어져야 하기 때문에 SESSION_CACHED_CURSORS 파라미터 값을 낮게 설정하는 것이 좋다. 보통 50 정도의 값에서 시작하는 것이 권장되며, Hard Parse와 Soft Parse의 발생 정도, Shared Pool의 크기에 따라 가감하는 방식을 사용한다.

[편집] 관련된 정보

  1. CURSOR_SPACE_FOR_TIME 파라미터
  2. OPEN_CURSORS 파라미터
  3. V$OPEN_CURSOR
  4. ORA-4031 에러

[편집] 외부 참조