Autotrace 를 사용하기
1. PLUSTRACE 권한생성
SQL> @?/sqlplus/admin/plustrce
2. 해당 사용자에게 PLUSTRACE 권한부여
SQL> grant plustrace to user_name;
3. 해당 사용자로 로그인 후 plan table생성
4. autotrace 기능켜기
이후 실행하는 쿼리들은 간단한 실행계획을 보여줍니다.
SQL Trace기능 사용하기(파일은 user_dump_dest 에 생성됩니다.)
1. 기능 활성화하기
인스턴스 레벨 : 초기화 파라미터수정(부하많이 일으킴)
SQL_TRACE=TRUE
세션레벨
현재세션
임의의 세션(V$SESSION을 이용해 SID, SREIAL#를 알아낸 다음)
2. 이후 쿼리실행 후 UDUMP에 파일생성확인
(TKPROF는 SQL Trace로 생성된 파일을 보기 쉽게 하는 툴입니다.)
이후 vi 로 지정한 파일이름 열어 확인하기
$ vi tuning_scott.prf
*******************
* 세션레벨별로 지정한 것들은 모두 다른 계정으로 들어가거나, 세션을 종료하게 되면
처음부터 다 다시 설정해야합니다.
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);
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);
SQL> execute dbms_system.set_sql_trace_in_session(SID, SERIAL#, TRUE);
예제 : SQL> execute dbms_system.set_sql_trace_in_session(142, 42, true);
[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 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)) ********************************************************************************
*******************
사이에 있는 것이 한 쿼리에 대한 분석 세트입니다.
******************* * 세션레벨별로 지정한 것들은 모두 다른 계정으로 들어가거나, 세션을 종료하게 되면
처음부터 다 다시 설정해야합니다.
'Oracle > 튜닝' 카테고리의 다른 글
SQL 튜닝 연습 #1 ; hint사용, where절 함수사용 시 최대한 자료가 적은 테이블에 함수사용하게 하기 (0) | 2012.03.18 |
---|