Oracle Database TIP
SQL*Plus AUTOTRACE 15 0 99,999+

by 구루비 EXPLAIN PLAN PLUSTRACE ROLE AUTOTRACE [2002.02.03]


  아래 강좌는 오래전에 작성되었습니다. 자세한 강좌는 오라클클럽 위키의 강좌를 참고해 주시기 바랍니다.

 

EXPLAIN PLAN 이란?

  사용자들이 SQL 문의 액세스 경로를 확인하고 튜닝을 할 수 있도록 SQL 문을 분석하고 해석하여 실행 계획을 수립한 후 실행 계획을 테이블(plan_table)에 저장하도록 해주는 명령 이다.

1. PLAN TABLE의 생성

  EXPLAIN PLAN을 sql 에 포함해서 수행하면 옵티마이저가 실행 계획까지만 수립하여 PLAN_TABLE에 저장 한다

 
-- PLAN을 사용하고자 하는 USER로 SQLPLUS LOGIN 하다 
-- $ORACLE_HOME/rdbms/admin/utlxplan.sql을 수행한다.

C:\> SQLPLUS scott/tiger 
SQL> @C:\oracle\rdbms\admin\utlxplan.sql;
    

2. PLUSTRACE ROLE의 생성

  SYSDBA 권한으로 접속하여 PLUSTRACE ROLE을 생성 한다.

  $ORACLE_HOME/sqlplus/admin/plustrce.sql을 수행하여 PLUSTRACE ROLE을 생성 한다

 
SQL> CONN / AS SYSDBA
연결되었습니다.

SQL> @C:\oracle\sqlplus\admin\plustrce.sql;

SQL> CREATE ROLE plustrace;
롤이 생성되었습니다.
 
SQL> GRANT select ON v_$sesstat TO plustrace;
 권한이 부여되었습니다.
 
SQL> GRANT select ON v_$statname TO plustrace;
권한이 부여되었습니다.
 
SQL> GRANT select ON v_$session TO plustrace;
 권한이 부여되었습니다.

SQL> GRANT plustrace TO dba with admin option;
권한이 부여되었습니다.
    

3. PLUSTRACE ROLE 부여

  PLUSTRACE ROLE을 plan을 사용하고자 하는 유저에게 부여 한다.

 
SQL> GRANT plustrace TO scott;
권한이 부여되었습니다. 
    

4. AUTOTRACE 실행

  
SQL>conn scott/tiger
접속되었습니다.
 
-- autotrace 상태를 on으로 변경한다.
SQL> SET AUTOTRACE ON  ;
 
-- SQL문을 실행해 보자 
SQL> SELECT a.ename, a.sal, b.dname
     FROM emp a, dept b
     WHERE a.deptno = b.deptno;

SMITH           800     RESEARCH
ALLEN           1600    SALES
WARD            1250    SALES
JONES           2975    RESEARCH
MARTIN          1250    SALES
BLAKE           2850    SALES
...

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   NESTED LOOPS
   2    1     TABLE ACCESS (FULL) OF 'EMP'
   3    1     TABLE ACCESS (BY INDEX ROWID) OF 'DEPT'
   4    3       INDEX (UNIQUE SCAN) OF 'PK_DEPT' (UNIQUE)
 
Statistics
----------------------------------------------------------
        460     recursive calls
          6     db block gets
        111     consistent gets
          9     physical reads
          0     redo size
       1259  bytes sent via SQL*Net to client
        429     bytes received via SQL*Net from client
          2     SQL*Net roundtrips to/from client
          8     sorts (memory)
          0     sorts (disk)
         14     rows processed
    

참고링크

- 강좌 URL : http://www.gurubee.net/lecture/1159

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입