메모리 구조중급Oracle 전용

Shared Pool

SQL 실행계획과 딕셔너리 캐시를 담는 SGA 영역

정의

SGA의 핵심 구성 요소 중 하나. Library Cache(파싱된 SQL과 실행계획), Data Dictionary Cache(시스템 메타데이터), Result Cache(결과 캐시) 등이 들어 있다. 같은 SQL이 다시 실행될 때 Library Cache의 실행계획을 재사용하면 Hard Parse를 피할 수 있다(Soft Parse).

왜 중요한가?

Shared Pool이 부족하거나 단편화되면 ORA-04031 에러가 발생한다. Bind Variable을 안 쓰는 SQL이 많으면 Library Cache가 무수한 단발성 SQL로 채워져 Hard Parse가 폭증한다.

틀리기 쉬운 포인트

  • !Bind Variable 미사용은 Shared Pool 단편화의 주범입니다.
  • !CURSOR_SHARING=FORCE는 임시방편. 코드 수정으로 Bind Variable 도입이 정석.
  • !Shared Pool 부족은 ORA-04031로 나타납니다.

예시

  -- Library Cache Hit Ratio
SELECT namespace, gets, gethits, gethitratio
FROM v$librarycache
WHERE namespace = 'SQL AREA';

성능 포인트

!Bind Variable 미사용은 Shared Pool 단편화 주범. CURSOR_SHARING은 임시방편.

관련 개념

관련 문제 풀어보기

관련 카테고리