-
SQL 실행계획 / traceDB/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;