Oracle/튜닝

Autotrace, SQL Trace파일생성, TKPROF이용하기

에몽이ㅋ 2012. 3. 14. 05:55
Autotrace 를 사용하기

1. PLUSTRACE 권한생성 
SQL> @?/sqlplus/admin/plustrce

2. 해당 사용자에게 PLUSTRACE 권한부여 
SQL> grant plustrace to user_name; 

3. 해당 사용자로 로그인 후 plan table생성
SQL> conn scott/tiger
SQL> @?/rdbms/admin/utlxplan

4. autotrace 기능켜기
SQL> set autot on

이후 실행하는 쿼리들은 간단한 실행계획을 보여줍니다.


SQL Trace기능 사용하기(파일은 user_dump_dest 에 생성됩니다.)
1. 기능 활성화하기
인스턴스 레벨 : 초기화 파라미터수정(부하많이 일으킴)
SQL_TRACE=TRUE 

세션레벨
현재세션
alter session set tracefile_identifier='SCOTT';
alter session set sql_trace=true;
alter session set timed_statistics=true;
exec dbms_session.set_sql_trace(true);

임의의 세션(V$SESSION을 이용해 SID, SREIAL#를 알아낸 다음)
select USERNAME, SID, SERIAL#, LOGON_TIME
from v$session;
USERNAME                              SID    SERIAL# LOGON_TIME
------------------------------ ---------- ---------- -------------------
SYS                                   139         36 2012-03-14:05:34:25
SCOTT                                 142         42 2012-03-14:05:34:43
                                      146          1 2012-03-12:21:35:12
.... 생략 ....
21 rows selected.

해당 세션 추적하기
SQL> execute dbms_system.set_sql_trace_in_session(SID, SERIAL#, TRUE); 
예제 : SQL> execute dbms_system.set_sql_trace_in_session(142, 42, true);

2. 이후 쿼리실행 후 UDUMP에 파일생성확인
[oracle@rac2 udump]$ pwd
/home/oracle/admin/rac/udump
[oracle@rac2 udump]$ ls -l
합계 264
drwxr-xr-x  2 oracle dba   4096  3월 14 05:40 backup
-rw-r-----  1 oracle dba  21935  3월 14 05:39 testdb_ora_1489_SCOTT.trc

3. 파일내용확인하기
 
위 SQL Trace 에서 생성된 파일으로 TKPROF이용하기
(TKPROF는 SQL Trace로 생성된 파일을 보기 쉽게 하는 툴입니다.)
$ tkprof testdb_ora_1489_SCOTT.trc tuning_scott.prf explain=scott/tiger sys=no

이후 vi 로 지정한 파일이름 열어 확인하기
$ vi tuning_scott.prf
********************************************************************************

select count(*)
from
 test01


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          2          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0         24          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0         26          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 28  (SCOTT)

Rows     Execution Plan
-------  ---------------------------------------------------
      0  SELECT STATEMENT   MODE: ALL_ROWS
      0   SORT (AGGREGATE)
      0    INDEX (FAST FULL SCAN) OF 'TEST01_NO_PK' (INDEX (UNIQUE))




********************************************************************************

*******************
 사이에 있는 것이 한 쿼리에 대한 분석 세트입니다.
******************* 


* 세션레벨별로 지정한 것들은 모두 다른 계정으로 들어가거나, 세션을 종료하게 되면
처음부터 다 다시 설정해야합니다.