2._AutoTrace
2012.03.25 22: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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
26 | 3._SQL트레이스 | sapius | 2012.04.03 | 37300 |
25 | 8._Statspack_AWR | 시와처 | 2012.04.01 | 11768 |
24 |
7._Response_Time_Analysis_방법론과_OWI
![]() | 시와처 | 2012.04.01 | 5916 |
23 | 6._V$SYSTEM_EVENT | 시와처 | 2012.04.01 | 3507 |
22 | 4._동시성_구현_사례 [1] | dasini | 2012.03.26 | 11962 |
21 |
5._오라클_Lock
![]() | 시와처 | 2012.03.25 | 12875 |
20 | 3._비관적_vs._낙관적_동시성_제어 | dasini | 2012.03.25 | 6396 |
» | 2._AutoTrace | 남송휘 | 2012.03.25 | 3138 |
18 | 1._Explain_Plan | 남송휘 | 2012.03.25 | 4543 |
17 | 3장._오라클_성능_관리 | 남송휘 | 2012.03.25 | 3117 |
16 |
2._트랜잭션_수준_읽기_일관성
![]() | AskZZang | 2012.03.20 | 6364 |
15 | 1._트랜잭션_동시성_제어 | AskZZang | 2012.03.19 | 4883 |
14 | 11._Shared_Pool | 박영창 | 2012.03.19 | 3395 |
13 | 10._대기_이벤트 | 박영창 | 2012.03.18 | 10624 |
12 | 9._Snapshot_too_old | 박영창 | 2012.03.18 | 9969 |
11 | 8._블록_클린아웃 | 시와처 | 2012.03.18 | 12305 |
10 |
7._Consistent_vs._Current_모드_읽기
![]() | 시와처 | 2012.03.18 | 5708 |
9 | 2장._트랜잭션과_Lock | AskZZang | 2012.03.16 | 5462 |
8 |
6._문장수준_읽기_일관성
![]() | 정찬호 | 2012.03.11 | 57563 |
7 |
4._Redo
![]() | 남송휘 | 2012.03.11 | 5606 |