쿼리 튜닝 시 가장 좋은 방법은 실제 실행된 쿼리문에 대해서 Trace를 떠보는 것입니다.


■ 전제조건

    1. plustrace 롤이 DB에 있어야 함
        → 없으면 sys로 로그인 후 $ORACLE_HOME/sqlplus/admin/plustrace.sql 실행

    2. 쿼리를 실행하는 user가 plustrace 롤을 가지고 있어야 함
        → 없으면 sys로 로그인 후 grant plustrace to [user];

    3. plan_table이 DB에 있어야 함
        → 없으면 user로 로그인 후 $ORACLE_HOME/rdbms/admin/utlxplan.sql 실행


■ Trace 실행

    1. 우선 sys로 로그인하여 아래의 파라미터 값을 확인합니다.
        SQL> show parameter timed
        SQL> show parameter sql_trace

    2. 이제 쿼리를 실행할 user로 로그인합니다.

    3. 위의 파라미터 값들이 둘 다 true라면 다음 단계로 진행, 만일 false라면 아래의 명령 실행 (현재 세션에만 적용)
        SQL> alter session set timed_statistics=true;
        SQL> alter session set sql_trace=true;

    4. 다음 명령 실행
        SQL> set autotrace on
        SQL> execute dbms_session.set_sql_trace(true);

    5. Trace를 뜰 쿼리문을 실행시킵니다.


■ 결과 확인

    1. 결과는 user dump destination 에 저장됩니다.
       → show parameter user로 확인, 보통 $ORACLE_HOME/admin/SID/udump에 위치

    2. 가장 최근의 파일을 찾습니다.
        # ls -altr

    3. 보기 편한 모양으로 만들기 위해 tkprof 명령을 사용합니다.
        # tkprof  [가장최근의덤프파일]  [원하는 파일명]

    4. 만들어진 text 파일을 확인합니다.





Posted by 하이안
,