ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 실행계획 / trace
    DB/Oracle 2012. 11. 29. 13:16

    SQL *Plus


    EXPLAIN PLAN

    - 주어진 SQL 쿼리를 지금 실행한다면 이 쿼리의 쿼리 계획이 어떻게 될지를 오라클에게 알려달라고 하는데 이용

    - 이 계획은 현재의 세션에서 현재의 설정으로 쿼리를 실행할 경우 사용될 수 있는 계획이라는 점


    AUTOTRACE

    - 실제 실행과 관련된 몇 가지 중요한 통계를 제공함으로써 실제로 쿼리를 수행하는데 얼마나 많은 일이 수행되었는가를 알려준다. 


    TKPROF

    - 상당히 low level의 추적기능을 켤 수 있는 능력을 보유

    - SQL 및 PL/SQL 호출, 시간정보, 대기 이벤트, 수행된 논리적인 I/O, 물리적인 I/O의 수, CPU와 벽시계 시간 측정, 처리된 행의 수, 행의수를 포함한 쿼리 계획 등

    - 활성화 방법

      alter session set timed_statisics=true;

      alter session set events '10046 trace name context forever, level 12';


    - level 

      . 1 - 표준 SQL_TRACE 기능을 활성화한다(SQL_TRACE=TRUE와 동일)

      . 4 - SQL_TRACE을 활성화하고 바인드 변수의 값을 추적 파일에 기록한다. 

      . 8 - SQL_TRACE을 활성화하고 대기 이벤트를 추적 파일에 기록한다. 

      . 12 - SQL_TRACE을 활성화하고 바인드 변수와 대기 이벤트를 기록한다. 


    - 추적 파일 이름의 획득(2가지)

      select c.value || '\ORA' || to_char(a.spid, 'fm00000') || '.trc'

      from v$process a, v$session b, v$parameter c

      where a.addr = b.paddr 

            and b.audsid = sys_context('userenv','sessionid') 

      and c.name = 'user_dump_dest'



      select rtrim(c.value,'/') || '/' || d.instance_name || '_ora_' || ltrim(to_char(a.spid)) || '.trc'

      from v$process a, v$session b, v$parameter c, v$instance d

      where a.addr = b.paddr 

      and b.sudsid = sys_context('userenv', 'sessionid')

    and c.name = 'user_dump_dest'


    - TKPROF 보고서 생성 (tk.prf라는 텍스트 파일로 만들기)

      .$ tkprof /usr/oracle/............./ora920_ora)14246.trc tk.prf


    DMS_PROFILER


    PLAN TABLE

      • GRANT DELETE, INSERT, SELECT, UPDATE ON SYS.PLAN_TABLE TO PUBLIC;


    댓글

Written by Skymaker.