SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
Shared Pool과 SQL Parsing: Library Cache·Soft Parse·Hard Parse
원래 이론 →판단 기준
예시·텍스트좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
1. 문제 SQL의 정확한 SQL Text와 SQL_ID를 확인한다.
2. 값만 다른 Literal SQL과 대소문자·주석·공백 변형 SQL이 증가하는지 확인한다.
3. Application이 Cursor를 Parse Once·Execute Many 방식으로 재사용하는지 확인한다.
4. PARSE_CALLS와 EXECUTIONS의 관계를 확인한다.
5. System·Session의 parse count(total)·hard와 cursor cache hits를 비교한다.
6. VERSION_COUNT, LOADS, INVALIDATIONS를 확인한다.
7. DDL·Compile·통계 수집·권한 변경 시점과 Invalidation 증가 시점을 대조한다.
8. 후속 이론에서 V$SQL_SHARED_CURSOR로 Child 공유 실패 원인을 확인한다.
9. Parse CPU, Mutex·Library Cache 대기와 전체 처리량을 함께 비교한다.
10. 변경 후 Hard Parse·Soft Parse·Execute without Parse와 응답시간을 재측정한다.
문제 유형과 대응을 구분합니다.
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 원인 | 우선 대응 |
|---|---|
| Literal SQL 폭증 | Bind 적용과 SQL Text 표준화 |
| 실행마다 Parse Call | Prepared Statement·Cursor 재사용 |
| Session Cursor Cache 활용 부족 | Application 패턴과 SESSION_CACHED_CURSORS 검토 |
| Child Cursor 과다 | Bind Metadata·환경·객체 공유 조건 분석 |
| DDL·Compile에 의한 Invalidation | 변경 시간과 배포 절차 조정 |
| Shared Pool Aging | SQL 재사용성·메모리 압박과 Shared Pool 상태 분석 |
| Hard Parse 폭증 | SQL 공유·Parse Call·무효화의 근본 원인부터 개선 |
Shared Pool을 Flush하는 것은 원인을 해결하는 방법이 아닙니다. 기존 실행 구조를 제거하여 이후 대량 Hard Parse를 유발할 수 있으므로 진단 목적 없이 반복해서 사용하면 안 됩니다.
헷갈리는 개념
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 영역 | 주로 저장하는 대상 |
|---|---|
| Library Cache | SQL·PL/SQL의 실행 가능한 구조, 실행계획, 의존 관계 |
| Dictionary Cache | 객체·사용자·권한 등 Data Dictionary Metadata |
| Database Buffer Cache | 테이블·인덱스에서 읽은 Data Block |
Library Cache는 SELECT 결과 행을 저장하는 Result Cache로 이해하면 안 됩니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.