2._AutoTrace
2012.03.26 07:13
- AutoTrace
- sql을 튜닝하는데 유용한 정보들을 많이 포함하고 있어 가장 즐겨 사용되는 도구
SQL> set autotrace onSQL> 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.sqlSQL>
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
- 문서의 잘못된 점이나 질문사항은 본문서에 댓글로 남겨주세요. ^^
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
66 | Front Page | 운영자 | 2012.02.21 | 131203 |
65 | 6._문장수준_읽기_일관성 | 정찬호 | 2012.03.12 | 57274 |
64 | 3._SQL트레이스 | sapius | 2012.04.04 | 26853 |
63 | 5._Undo | dasini | 2012.03.11 | 25074 |
62 | 2._SQL_처리과정 | dasini | 2012.04.06 | 21688 |
61 | 6._RAC_캐시_퓨전 | 남송휘 | 2012.05.21 | 17532 |
60 | 4._커서_공유 | 남송휘 | 2012.04.27 | 16112 |
59 | 5._오라클_Lock | 시와처 | 2012.03.26 | 12579 |
58 | 8._블록_클린아웃 | 시와처 | 2012.03.19 | 12015 |
57 | 4._동시성_구현_사례 [1] | dasini | 2012.03.27 | 11698 |
56 | 8._Statspack_AWR | 시와처 | 2012.04.01 | 11488 |
55 | 2._DB_버퍼_캐시 | 시와처 | 2012.03.04 | 10432 |
54 | 10._대기_이벤트 | 박영창 | 2012.03.19 | 10373 |
53 | 9._Snapshot_too_old | 박영창 | 2012.03.19 | 9734 |
52 | 1._기본_아키텍처 | AskZZang | 2012.03.02 | 8350 |
51 | 7._세션_커서_캐싱 | 박영창 | 2012.04.22 | 7793 |
50 | 5._Direct_Path_IO | 남송휘 | 2012.05.21 | 7558 |
49 | 3._버퍼_Lock | 박영창 | 2012.02.24 | 7261 |
48 | 7._PLSQL_함수의_특징과_성능_부하 | 남송휘 | 2012.05.15 | 6642 |
47 | 10._V$SQL | 정찬호 | 2012.04.09 | 6544 |