SQL 튜닝 시 유용한 정보들을 많이 포함하고 있어 가장 즐겨 사용하는 도구 중 하나
SQL> set autotrace on
SQL> select * from scott.emp where empno=7900;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO //쿼리수행결과
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7900 JAMES CLERK 7698 81/12/03 950 30
Execution Plan
----------------------------------------------------------
--------------------------------------------------------------------------- //실행계획
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 37 | 1 (0)|
| 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 37 | 1 (0)|
|* 2 | INDEX UNIQUE SCAN | PK_EMP | 1 | | 0 (0)|
---------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("EMPNO"=7900)
Statistics
---------------------------------------------------------- //실행통계
0 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
750 bytes sent via SQL*Net to client
405 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
SQL> set autot off
아래와 같은 옵션에 따라 필요한 부분만 출력해 볼 수 있음
실제수행여부 | 수행결과 | 실행계획 | 실행통계 | |
---|---|---|---|---|
(1) set autotrace on | O | O | O | O |
(2) set autotrace on explain | O | O | O | |
(3) set autotrace on statistics | O | O | O | |
(4) set autotrace traceonly | O | O | O | |
(5) set autotrace traceonly explain | O | |||
(6) set autotrace traceonly statistics | O | O |
(1)~(3)수행 결과를 출력 해야 하므로 쿼리를 실제 수행
(4),(6)실행 통계를 보여줘야 하므로 쿼리를 실제 수행
(5) 번은 실행 계획만 출력하면 되므로 실제 수행하지 않음
(1) 실행계획 확인 용도로만 (Plan_Table만 생성)
(2) 실행통계 까지 확인 하려면
v_$sesstat, v_$statname, v_$mystat 뷰에 대한 읽기 권한이 필요
dba, select_catalog_role 등의 롤을 부여받지 않은 사용자의 경우 별도의 권한 설정이 필요
TIP!
plustrace 롤을 생성하고 롤을 부여하는 것이 편리
SQL> @?/sqlplus/admin/plustrace.sql
SQL> grant plustrace to scott;
autotrace on statistics
SQL> @session
USERNAME PROGRAM STATUS
--------- ------------ -------
SCOTT sqlplus.exe ACTIVE //한개의 세션이 존재
SQL> set autotrace on statistics //statistics옵션 활성
SQL> @session
USERNAME PROGRAM STATUS
--------- ------------ -------
SCOTT sqlplus.exe ACTIVE
SCOTT sqlplus.exe ACTIVE //새로운 세션이 추가됨
SQL> set autotrace on explain //explain 옵션 활성
SQL> @session
USERNAME PROGRAM STATUS
--------- ------------ -------
SCOTT sqlplus.exe ACTIVE
//새롭게 열렸던 세션이 사라짐
서적(오라클 성능 고도화 원리와해법 I) : http://book.daum.net/detail/book.do?bookid=KOR9788996246015