Plan Analysis
Plan Analysis 화면에서는 하나의 SQL이 기간 중 서로 다른 실행 계획(Plan)으로 여러 번 실행된 이력을 찾아, 계획별 성능 차이와 실제 실행 계획, 계획이 바뀐 원인을 확인할 수 있습니다.
좌측 메뉴에서 데이터베이스 > Oracle > SQL 분석 > Plan Analysis를 선택하세요.

화면은 상단 조회 조건, Plan Analysis List, Trend 차트, 하단 SQL List와 Plan/Reason 패널로 구성됩니다.
조회 조건 설정하기
화면 상단에서 조회할 대상과 조건을 설정합니다.
- Period: 조회할 날짜 범위를 선택합니다.
- Group / Instance: 조회할 인스턴스 그룹과 개별 인스턴스를 선택합니다.
- Plan Count: 조회 기간 중 실행 계획이 바뀐 횟수(이상)를 지정합니다. 값을 높일수록 계획이 더 자주 바뀐 SQL만 좁혀서 확인할 수 있습니다.
조건을 변경한 뒤 [Search] 버튼을 클릭해야 새 조건으로 다시 조회됩니다.
[Option] 버튼을 클릭하면 팝업에서 SQL ID를 직접 입력해 특정 SQL 하나만 조회할 수 있습니다.

Plan Analysis List에서 계획이 바뀐 SQL 확인하기
Plan Analysis List에서는 조건에 해당하는, 즉 실행 계획이 여러 번 바뀐 SQL을 목록으로 확인할 수 있습니다.
목록에서 행을 클릭하면 아래 Trend 차트와 SQL List, Plan 패널이 모두 선택한 SQL 기준으로 갱신됩니다.
목록 상단의 필터 입력란에 텍스트를 입력하면 컬럼 값 기준으로 목록을 빠르게 필터링할 수 있습니다.
Trend 차트에서 계획별 성능 추이 비교하기
Trend 차트에서는 선택한 SQL의 Plan Hash Value(실행 계획)별로 색상을 구분해 성능 지표 추이를 라인으로 보여줍니다.
좌측 상단 드롭다운에서 Elapsed Time (sec), CPU Time (sec) 등 표시할 지표를 변경할 수 있습니다.
같은 SQL인데도 특정 구간에서 그래프 색상(Plan Hash Value)이 바뀌면서 값이 급격히 변한다면, 실행 계획 변경이 성능 저하의 원인일 가능성이 높으므로 아래 SQL List에서 해당 계획을 확인하는 것이 좋습니다.
SQL List와 Plan/Reason에서 계획 상세 확인하기
SQL List에서는 선택한 SQL의 Plan Hash Value·Child Number별 실행 통계를 확인할 수 있습니다.
행을 클릭하면 우측 패널이 해당 계획 기준으로 갱신됩니다.
Plan 탭: 실행 계획을 트리 구조로 보여주고, 하단 Predicate Information에서 각 단계의 필터·접근 조건을 확인할 수 있습니다.

Reason 탭: 해당 Child Cursor가 새로 생성된 원인(예: 통계 정보 변경에 따른 Rolling Invalidate)을 원문 그대로 보여줍니다.

같은 SQL이라도 바인드 변수 값이나 통계 정보 변경에 따라 여러 개의 Child Number가 생길 수 있으며, Child Number마다 실행 계획(Plan Hash Value)이 다를 수 있습니다.
Plan Diff로 두 실행 계획 비교하기
Plan 탭 우측 상단, Plan Hash Value 옆 비교 아이콘을 클릭하면 Plan Diff 팝업이 열리고, 좌우로 두 개의 실행 계획을 나란히 비교할 수 있습니다.

좌우 각각의 Plan Hash Value 드롭다운에서 비교할 실행 계획을 선택하면 두 계획의 Predicate Information이 함께 표시되며, 서로 다른 조건은 색상으로 강조되어 무엇이 바뀌었는지 바로 확인할 수 있습니다.
좌우에 같은 Plan Hash Value를 선택하면 비교할 대상이 없으므로 실행 계획과 Predicate Information 모두 "No data."로 표시됩니다.
