Explane plan
- explain plan 명령어를 사용하기 위해 plan_table 생성, ?는 $ORACLE_HOME
sql> @? /rdbms/admin/utlxplan.sql
- 오라클 10g 부터는 설치 시 기본적으로 sys.plan_table$ 테이블이 생성됨(public synonym 도 같이)
sql> select * from all_synonyms where synonym_name = 'PLAN_TABLE';
- explain plan for 명령을 수행하여, 실행계획을 plan_table에 저장
sql> explain plan set statement='query1' for select * from emp where empno=7900;
Auto Trace
- 빈번하게 사용되는 도구
sql> set autotrace on select * from emp where empno = 7900;
- 세션 확인, 하나의 세션에서 통계 정보가 정확
sql> @session
- Option
a. set autotrace on
sql을 수행하고 그 결과와 함께 실행계획 및 실행통계를 출력
b. set autotrace on explain
sql을 수행하고 그 결과와 함께 실행계획을 출력
c. set autotrace on statistics
sql 을 수행하고 그 결과와 함계 실행통계를 출력
d. set autotrace traceonly
sql을 수행하고 그 결과는 출력하지 않고 실행계획 및 실행통계를 출력
e. set autotrace traceonly explain
sql을 수행하지 않고 실행계획만 출력
f. set autotrace traceonly statistics
sql을 수행하고 그 결과는 출력하지 않고 실행통계만 출력
SQL 트레이스
- 가장 많이 사용되는 도구
자기 세션에 트레이스 걸기
sql> alter session set sql_trace = true;
sel> select * from emp where empno = 7900;
sql> alter session set sql_trace = false;
- user_dump_dest 파라미터로 지정된 서버 디렉토리 밑에 트레이스 파일(.trc)이 생성, 파일 찾기 스크립트
sql> select r.value || '/' || lower(t.instance_name) || '_ora_' || ltrim(to_char(p.spid)) || '.trc' trace_file
from v$process p, v$session s, v$parameter r, v$instance t where p.addr = s.paddr
and r.name = 'user_dump_dest' and s.sid = (select sid from v$mystat where rownum = 1);
Call 통계 컬럼
- call : 커서 상태에 따라 Parse, Execute, Fetch 세 개의 Call로 나누어 통계 정보 출력
- count : Parse, Execute, Fetch 각 단계가 수행된 횟수
- cpu : 현재 커서가 각 단계에서 사용한 cpu time
- elapsed : 현재 커서가 각 단계를 수행하는데 소용된 시간
- disk : 디스크로부터 읽은 블록 수
- query : consistent 모드에서 읽은 버퍼 블록 수
- current : Current 모드에서 읽은 버퍼 블록 수
- rows : 각 단계에서 읽거나 갱신한 처리 건수
DBMS_XPLAN 패키지
- 실행계획 출력을 좀더 쉽게 보기
- 예상 실행계획 출력, 첫번째 인자는 plan table명, 두번째는 statement_id(null 일때는 가장 마지막 실행계획), 세번째는 포맷
sql> select plan_table_output from table(dbms_xplan.display('plan_table', null, 'serial') );
- 포맷 옵션, BASIC ROW BYTES COST PARTITION .. 등 ALL 옵션을 사용하여 모든 항목을 볼수 있음
v$sql 분석하여 튜닝 여부 확인
|