자격증/SQLP - 완 -

[Oracle] Plan 보는 법(DBMS_XPLAN.DISPLAY_CURSOR)

Kang_hobin 2024. 2. 2. 10:40

Oracle에서 쿼리 실행 계획을 보려면 먼저 아래 뷰에 대한 조회 권한이 있어야 한다.

  • V$SQL
  • V$SESSION
  • V$SQL_PLAN
  • V$SQL_PLAN_STATISTICS_ALL

 

먼저 세션 레벨을 변경하거나,

alter session set statistics_level=ALL;

실행계획을 보려는 쿼리에 아래 힌트를 준다.

SELECT /*+ gather_plan_statistics */ *
  FROM TEST
 WHERE HI = :HI


그 후 쿼리를 실행하고.. 아래 V$SQL에서 쿼리의 SQL_ID와 CHILD_NUMBER를 확인한다.

SELECT SUBSTR(SQL_TEXT, 1, 30) SQL_TEXT
     , SQL_ID
     , CHILD_NUMBER
  FROM V$SQL     
 WHERE SQL_TEXT LIKE '내가 실행한 쿼리%';

(DBMS_XPLAN.DISPLAY_CURSOR의 파라미터 3개 중에 1, 2번째 파라미터 값에 위 두개가 들어간다.

두 파라미터를 null로 입력하면 가장 최근 실행계획이 보여진다)



 3번째 파라미터는 출력 옵션이다.
+ 또는 -로 추가 또는 제외할 옵션을 넣을 수도 있다.
난 -rows를 넣어서 통계정보의 예측치를 제외하고 보았다.

SELECT * 
  FROM table(
      DBMS_XPLAN.DISPLAY_CURSOR(
        '위에서 가져온 SQL_ID 값', CHILD_NUMBER 값, 'allstats last -rows'
      )
  );