콘텐츠로 이동

Trace

Auto Trace

--1. Auto Trace 옵션 ON
SET AUTOTRACE ON

--2. 쿼리 실행
SELECT * FROM owner_name.table_name;

--3. 자동으로 결과 출력 후 실행 계획과 실행 통계가 출력됨
Execution Plan
----------------------------------------------------------
Plan hash value: 1516826816

-------------------------------------------------------------------------------
| Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |            |     1 |   135 |     2   (0)| 00:00:01 |
|*  1 |  COUNT STOPKEY     |            |       |       |            |          |
|   2 |   TABLE ACCESS FULL| table_name |     1 |   135 |     2   (0)| 00:00:01 |
-------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(ROWNUM<=1)


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          3  consistent gets
          0  physical reads
          0  redo size
       2144  bytes sent via SQL*Net to client
         52  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

--4. Auto Trace 옵션 OFF
SET AUTOTRACE OFF


실행 옵션

명령어 설명
SET AUTOTRACE TRACEONLY 결과 없이 실행 계획과 실행 통계 출력
SET AUTOTRACE TRACEONLY EXPLAIN 결과 없이 실행 계획만 출력
SET AUTOTRACE TRACEONLY STATISTICS 결과 없이 실행 통계만 출력


Auto Trace 권한

Auto Trace를 사용하려면 PLUSTRACE 권한이 필요

--부여
GRANT PLUSTRACE TO owner_name;

--회수
REVOKE PLUSTRACE TO owner_name;


SQL Trace

--1. SQL TRACE 활성화 (세션 레벨)
ALTER SESSION SET SQL_TRACE = TRUE;
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

--2. 파일 구분자 설정
ALTER SESSION SET TRACEFILE_IDENTIFIER='identifier';

--3. 쿼리 실행
SELECT * FROM owner_name.table_name;

--4. SQL TRACE 비활성화
ALTER SESSION SET SQL_TRACE = FALSE;

--5. 파일 확인
sid_ora_processid_identifier.trc 

--6. 파일 변환
tkprof tracefile outputfile


SQL Trace 주의점

  • SQL Trace를 사용할 때 인스턴스 레벨과 세션 레벨을 선택할 수 있는데 인스턴스 레벨이면 데이터베이스 전체 퍼포먼스가 20 ~ 30% 감소하므로 세션 레벨로 생성하는 것이 좋음