함수가 정의되어 있는 위치 : ORA_HOME\RDBMS\ADMIN\dbmsxpln.sql

This package defines several table functions which can be used to display execution plans.
이 패키지(DBMS_XPLAN)는 실행계획을 표시하기 위하여 사용되는 몇몇 테이블 펑션이 정의된다.

DBMS_XPLAN 패키지를 사용하기 위하여 다음 객체에 대한 SELECT privileges이 필요하다

  • V$SESSION
  • V$SQL_PLAN
  • V$SQL (optional)
  • V$SQL_PLAN_STATISTICS_ALL (plan statitics를 보기위하여 필수)

DBMS_XPLAN에서 표현되는 컬럼

1) Basics 항목 (Always Available)

  • Id :
    각 Operation 의 ID
    (\* 가 달려있는 경우는 predicate 정보에 access 및 filter 에 관한정보가 나옴을 표시한것)
  • Operation : (row source operation)
    각각 실행되는 JOB 을 나타냄
  • Name :
    Operation 이 엑세스하는 테이블 및 인덱스를 나타냄

2) Query Optimizer Estimations(옵티마이져의 예상 row 수 및 bytes, cost , temp 사용량)

  • Rows (E-Rows) :
    각 operation 이 끝났을 때 return되는 건수를 나타냄.
    이것은 예측 건수 이므로 실제 건수와는 다를 수 있음.
  • Bytes (E-Bytes) :
    각 operation 이 return 한 byte 수.
    예상치 이므로 실제 받은 byte와는 다를 수 있음.
  • TempSpc :
    각 operation. 이 temporary space 를 사용한 양(예상치임)
  • Cost (%CPU) :
    각 operation 의 Cost. (예상치 임)
    괄호안의 내용은 CPU Cost 의 백분율임.(이 값은 Child Operation 의 Cost 를 합친 누적치)
  • Time :
    예측 수행시간

3) Partitioning (파티션을 엑세스 할경우만 나타남)

  • Pstart :
    파티션을 엑세스 하는경우 시작파티션을 나타냄
    상수로 들어올때는 파티션 번호로 나타나며 변수로 들어올때는 KEY 로 나타남
  • Pstop :
    마지막 파티션을 나타냄.
    따라서 patart, pstop 를 이용하면 access 한 파티션을 알수 있음.

4) Parallel and Distributed Processing (Parallel Processsing 을 사용하거나 DB-LINK 를 사용하는경우)

  • Inst :
    DB-LINK 명(사용하는 경우만 나타남).
  • TQ :
    PARALLEL SQL 사용시 table queue 명을 나타냄
    TQ 는 PARALLEL SLAVE 간의 통신을 담당함.
  • IN-OUT :
    Parallel processing 시에 각각의 Operation 이 Serial 로 실행되는지 parallel 로 진행되는지를 나타냄.
  • PQ Distrib :
    Parallel processing 시에 producers 와 consumers 간의 데이터의 분배방식을 나타냄.

5) Runtime Statistics (실제 수행시간밑 실제수행건수)

  • Starts :
    각 operation 을 try 한 건수(예를 들어 nested loop join 이라면 인덱스를 여러 번 scan 함)
  • A-Rows :
    각 operation 이 return 한 건수
  • A-Time :
    실제 실행시간( 0.1초까지 나타남 (HH:MM:SS.FF))( 이값은 Child Operation 의 Cost 를 합친 누적치)



6) I/O Statistics (I/O 관련하여 READ / WRITE 한 블록수)

  • Buffers :
    각 Operation 이 메모리에서 읽은 block 수.
  • Reads :
    각 Operation 이 disk 에서 읽은 block 수.
  • Writes :
    각 Operation 이 disk 에 write한 block 수.

7) Memory Utilization Statistics(hash 작업이나 sort 작업시 사용한 메모리 통계)

  • OMem :
    optimal execution 에 필요한 메모리(예측치임).
  • 1Mem :
    one-pass execution. 에 필요한 메모리(예측치임)
  • O/1/M :
    각 operation 이 실행한 optimal/one-pass/multipass 횟수가 순서데로 표시됨.
  • Used-Mem :
    마지막 실행시의 사용한 메모리
  • Used-Tmp :
    마지막 실행시 메모리가 부족하여 temporary space 를 대신 사용할 때 나타남.
    보이는값에 1024 를 곱해야함.
    예를들어 32K 로 나타나면 32MB 를 의미함.
  • Max-Tmp :
    메모리가 부족하여 temporary space 를 사용할 때 최대 temp 사용량임.
    USED-TMP 와 다른점은 마지막 수행시가 아니라 SQL을 여러 번 수행했을경우에
    항상 최대값만 보인다는 것이다. (보이는값에 1024 를 곱해야함, 32K 로 나타나면 32MB 를 의미)
    (참조 http://scidb.tistory.com/trackback/46 )

---------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name     | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib | A-Rows |
---------------------------------------------------------------------------------------------------------------------------------------------------------------
|   1 |  PX COORDINATOR              |          |      1 |        |       |            |          |       |       |        |      |            |   9999 |
|   2 |   PX SEND QC (RANDOM)        | :TQ10001 |      0 |      1 |    29 |     7  (15)| 00:00:01 |       |       |  Q1,01 | P->S | QC (RAND)  |      0 |
|*  3 |    HASH JOIN SEMI            |          |      0 |      1 |    29 |     7  (15)| 00:00:01 |       |       |  Q1,01 | PCWP |            |      0 |
|   4 |     BUFFER SORT              |          |      0 |        |       |            |          |       |       |  Q1,01 | PCWC |            |      0 |
|   5 |      PX RECEIVE              |          |      0 |  10000 | 90000 |     4   (0)| 00:00:01 |       |       |  Q1,01 | PCWP |            |      0 |
|   6 |       PX SEND PARTITION (KEY)| :TQ10000 |      0 |  10000 | 90000 |     4   (0)| 00:00:01 |       |       |        | S->P | PART (KEY) |      0 |
|   7 |        TABLE ACCESS FULL     | T_PLAN   |      1 |  10000 | 90000 |     4   (0)| 00:00:01 |       |       |        |      |            |  10000 |
|   8 |     PX PARTITION RANGE ALL   |          |      0 |   9999 |   195K|     2   (0)| 00:00:01 |     1 |     3 |  Q1,01 | PCWC |            |      0 |
|   9 |      TABLE ACCESS FULL       | T_PLAN2  |      0 |   9999 |   195K|     2   (0)| 00:00:01 |     1 |     3 |  Q1,01 | PCWP |            |      0 |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
---------------------------------------------------
00:00:02.08 |      55 |       |       |          |
00:00:00.01 |       0 |       |       |          |
00:00:00.01 |       0 |   921K|   921K| 1246K (0)|
00:00:00.01 |       0 | 93184 | 93184 |  104K (0)|
00:00:00.01 |       0 |       |       |          |
00:00:00.01 |       0 |       |       |          |
00:00:00.05 |      46 |       |       |          |
00:00:00.01 |       0 |       |       |          |
00:00:00.01 |       0 |       |       |          |
--------------------------------------------

문서에 대하여