메뉴 건너뛰기

bysql.net

2._AutoTrace

2012.03.26 07:13

남송휘 조회 수:2914


  • 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
  • 문서의 잘못된 점이나 질문사항은 본문서에 댓글로 남겨주세요. ^^



번호 제목 글쓴이 날짜 조회 수
26 3._SQL트레이스 sapius 2012.04.04 26838
25 8._Statspack_AWR 시와처 2012.04.01 11469
24 7._Response_Time_Analysis_방법론과_OWI file 시와처 2012.04.01 5733
23 6._V$SYSTEM_EVENT 시와처 2012.04.01 3298
22 4._동시성_구현_사례 [1] dasini 2012.03.27 11683
21 5._오라클_Lock file 시와처 2012.03.26 12566
20 3._비관적_vs._낙관적_동시성_제어 dasini 2012.03.26 6176
» 2._AutoTrace 남송휘 2012.03.26 2914
18 1._Explain_Plan 남송휘 2012.03.26 4322
17 3장._오라클_성능_관리 남송휘 2012.03.26 2887
16 2._트랜잭션_수준_읽기_일관성 file AskZZang 2012.03.20 6136
15 1._트랜잭션_동시성_제어 AskZZang 2012.03.20 4658
14 11._Shared_Pool 박영창 2012.03.19 3155
13 10._대기_이벤트 박영창 2012.03.19 10364
12 9._Snapshot_too_old 박영창 2012.03.19 9725
11 8._블록_클린아웃 시와처 2012.03.19 11991
10 7._Consistent_vs._Current_모드_읽기 file 시와처 2012.03.18 5486
9 2장._트랜잭션과_Lock AskZZang 2012.03.17 5239
8 6._문장수준_읽기_일관성 file 정찬호 2012.03.12 57261
7 4._Redo file 남송휘 2012.03.12 5367