SET AUTOTRACE 이용 하기 , SQLTrace는 유용하게 이용되는 도구니 잘 기억해 주세요~~~
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)
SQL*Plus에서 사용자는 자동으로 Optimizer에서 실행계획과 통계정보를 얻을 수 있습니다. 이럴때 AUTOTRACE를 사용하며 DML문을 성공적으로 수행시 만들어지며 DML문의 성능 튜닝을 위한 방법으로 자주 이용 됩니다.
SET AUTOTRACE를 사용하기 위해선 실행 계획용 테이블(PLAN_TABLE)이 존재해야 하며 구문을 활성화 하기 위해 SET AUTOTRACE ON, 비활성화 하기위해 SET AUTOTRACE OFF하고 하면 됩니다. 참고로 SET AUTOTRACE에서 사용 할 수 있는 옵션은 다음과 같습니다.
SET AUTOTRACE OFF : 기본값으로 AUTOTRACE를 수행하지 않습니다.
SET AUTOTRACE ON EXPLAIN : 실행계획만을 출력
SET AUTOTRACE ON STATISTICS : 통계정보만을 출력
SET AUTOTRACE ON : 옵티마이저의 실행계획과 통계정보, 질의의 실행 결과를 함께 출력
SET AUTOTRACE TRACEONLY [EXPLAIN] : SET AUTOTRACE ON과 유사하지만 옵티마이저의 실행계획과 통계정보를 출력, 만약 EXPAIN이라고 하면 실행계획만 출력 합니다.
SQL> conn / as sysdba
연결되었습니다.
SQL> @C:\\oracle\\product\\10.2.0\\db_1\\sqlplus\\admin\\plustrce.sql
SQL>
SQL> drop role plustrace;
롤이 삭제되었습니다.
SQL> create role plustrace;
롤이 생성되었습니다.
SQL>
SQL> grant select on v_$sesstat to plustrace;
권한이 부여되었습니다.
SQL> grant select on v_$statname to plustrace;
권한이 부여되었습니다.
SQL> grant select on v_$mystat to plustrace;
권한이 부여되었습니다.
SQL> grant plustrace to dba with admin option;
권한이 부여되었습니다.
SQL>
SQL> set echo off
SQL> grant plustrace to scott;
권한이 부여되었습니다.
SQL> conn scott/tiger
연결되었습니다.
SQL>@C:\\oracle\\product\\10.2.0\\db_1\\RDBMS\\ADMIN\\utlxplan.sql
/*
아래는 set autotrace on은 SQL문이 실행 될대 마다 실행 계획과 통계정보, 그리고 SQL의 실행 결과까지 보기 위해섭니다.
만약 set autotrace trace라고만 하면 실행 계획과 통계정보만 보여 줍니다.
기능을 해제하기 위해서는 OFF라고 하면 됩니다.
*/
SQL> set autotrace on;
SQL> select deptno, min(sal) from emp
2 group by deptno
3 having min(sal) > (select min(sal) from emp
4 where deptno = 30)
5 order by deptno;
DEPTNO MIN(SAL)
---------- ----------
10 1300
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 FILTER
2 1 SORT (GROUP BY)
3 2 TABLE ACCESS (FULL) OF 'EMP'
4 1 SORT (AGGREGATE)
5 4 TABLE ACCESS (FULL) OF 'EMP'
Statistics
----------------------------------------------------------
191 recursive calls 재귀호출의 횟수
5 db block gets 현재의 블록이 요구된 횟수
28 consistent gets 한 블록에 대해 요구된 consistent read 횟수
7 physical reads 디스크로부터 읽어들인 데이터 블록의 총 개수
0 redo size 리두로그가 만들어진 크기
448 bytes sent via SQL*Net to client Client에 보내진 바이트수
503 bytes received via SQL*Net from client client로부터 받은 바이트 수
2 SQL*Net roundtrips to/from client
3 sorts (memory) 메모리에서 일어나 소트의 수
0 sorts (disk) 디스트에서 일어나 소트의 수
1 rows processed 연산을 하는 동안 처리한 ROW의 수
재귀적호출이란 오라클은 내부 처리를 위한 테이블을 관리 하며 이 테이블을 변화 시킬 때 내부적인 SQL문장을 생성하는데 이를 재귀적인 호출이라고 합니다.
댓글 없음:
댓글 쓰기