2._AutoTrace

조회 수 2565 추천 수 0 2012.03.25 22:13:03
남송휘 *.168.192.1


  • AutoTrace 
    • 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 03-DEC-81        950                    30



Execution Plan

----------------------------------------------------------

Plan hash value: 2949544139


--------------------------------------------------------------------------------------

| Id  | Operation                   | Name   | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |        |     1 |    38 |     1   (0)| 00:00:01 |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    38 |     1   (0)| 00:00:01 |

|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     0   (0)| 00:00:01 |

--------------------------------------------------------------------------------------


Predicate Information (identified by operation id):

---------------------------------------------------


   2 - access("EMPNO"=7900)



Statistics

----------------------------------------------------------

          1  recursive calls

          0  db block gets

          2  consistent gets

          1  physical reads

          0  redo size

        769  bytes sent via SQL*Net to client

        409  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 autotrace on : SQL을 실제 수행하고 그 결과와 함께 실행계획 및 실행 통계를 출력

set autotrace on explain :  sql 을 실제 수행하고  그 결과와 함께 실행계획을 출력

set autotrace on statistics : sql을 실제 수행하고 그결과함께 실행 통계를 출력

set autotrace traceonly : sql을 실제 수행하지만 그 결과는 출력하지 않고 실행계획과 통계만 출력

set autotrace traceonly explain : sql을 실제 수행하지 않고 실행계획만을 출력

set autotrace traceonly statistics : sql을 수행하지만 결과는 출력 하지 않고 실행통계만 출력



  • AutoTrace
    • 실행계획 확인 용도  : plan_table 만 생성되면 됨
    • 실행통계까지 함께 확인 : v_$sesstat, v_$statname, v_$mystat 에 대한 읽기 권한 필요
  • plustrace 룰 생성


SQL> @?/sqlplus/admin/plustrce.sql

SQL>

SQL> drop role plustrace;


Role dropped.


SQL> create role plustrace;


Role created.


SQL>

SQL> grant select on v_$sesstat to plustrace;


Grant succeeded.


SQL> grant select on v_$statname to plustrace;


Grant succeeded.


SQL> grant select on v_$mystat to plustrace;


Grant succeeded.


SQL> grant plustrace to dba with admin option;


Grant succeeded.


SQL>

SQL> set echo off

SQL>



  • statistics 모드로 AutoTrace 를 활성화시키면 
  • 새로운 세션이 하나 열리면서 현재 세션의 통계정보를 대신 쿼리해서 보여줌

SQL> select username,osuser,program,status,sid,serial# from v$session

2  where username='SCOTT';  


USERNAME OSUSER    PROGRAM                  STATUS          SID    SERIAL#

-------- --------- ------------------------ -------- ---------- ----------

SCOTT    oracle    sqlplus@ora (TNS V1-V3)  ACTIVE           26      51488

SCOTT    oracle    sqlplus@ora (TNS V1-V3)  INACTIVE        144      60844



※ statistics 모드로 AutoTrace를 활성화 하니까 새로운 새션이 하나 추가

※ 같은 세션에서 수행한다면 세션통계를 쿼리할때의 수행통계까지 뒤섞이게 됨


SQL> set autotrace on statistics

SQL> select username,osuser,program,status,sid,serial# from v$session

2  where username='SCOTT';  


USERNAME OSUSER    PROGRAM                  STATUS          SID    SERIAL#

-------- --------- ------------------------ -------- ---------- ----------

SCOTT    oracle    sqlplus@ora (TNS V1-V3)  INACTIVE         12      48134

SCOTT    oracle    sqlplus@ora (TNS V1-V3)  ACTIVE           26      51488

SCOTT    oracle    sqlplus@ora (TNS V1-V3)  INACTIVE        144      60844






※ explain 모드로 변경시 세션이 사라짐


SQL> set autotrace on explain


SQL> select username,osuser,program,status,sid,serial# from v$session

SQL> where username='SCOTT';  2


USERNAME OSUSER    PROGRAM                  STATUS          SID    SERIAL#

-------- --------- ------------------------ -------- ---------- ----------

SCOTT    oracle    sqlplus@ora (TNS V1-V3)  ACTIVE           26      51488

SCOTT    oracle    sqlplus@ora (TNS V1-V3)  INACTIVE        144      60844


SQL>






  • 오라클 고도화 원리와 해법 2 (bysql.net 2012년 1차 스터디)
  • 작성자: 남송휘 (tofriend)
  • 최초작성일: 2012년 3월 25일
  • 본문서는 bysql.net 스터디 결과입니다 .본 문서를 인용하실때는 출처를 밝혀주세요. http://www.bysql.net
  • 문서의 잘못된 점이나 질문사항은 본문서에 댓글로 남겨주세요. ^^