by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

SQL 트레이스




(1) 자기 세션에 트레이스 걸기
  • 자신이 접속해 있는 세션에만 트레이스를 거는 방법이다.
    alter session set sql_trace = true; --트레이스 걸기
    select * from emp where empno = 7900; --SQL 실행
    select * from dual; --SQL 실행
    alter session set sql_trace = false; --걸어놓은 트레이스 해제
    

=> 그러고 나면, 지정된 서버 디렉토리에 트레이스파일(.trc)이 생성
하지만, 트레이스파일을 직접분석하기에는 대략난감.
그러므로 TKProf유틸리티를 사용하여, 분석하기 쉽도록 이쁘게 포맷팅해서 보면 됨.

tkprof ora10g_ora14370_oraking.trc report.prf sys=no

=> ora10g_ora14370_oraking.trc 파일을 예쁘게 포맷팅해서 report.prf으로 만들어주고, SQL을 파싱하는 과정에서 내부적으로 수행되는 SQL은 제외한다(sys=no).
=> 그리고, 예쁘게 만든 파일 분석하기

  • Call통계 컬럼들의 의미
    항목 설명
    call 커서 상태에 따라 Parse, Execute, Fetch 세 개의 Call로 나누어 각각에 대한 통계정보를 보여준다.
    - Parse : 커서를 파싱하고 실행계획을 생성하는 데 대한 통계
    - Execute : 커서의 실행 단계에 대한 통계
    - Fetch : 레코드를 실제로 Fetch하는 데 대한 통계
    count Parse, Execute, Fetch 각 단계가 수행된 횟수
    cpu 현재 커서가 각 단계에서 사용한 cpu time
    elapsed 현재 커서가 각 단계를 수행하는 데 소요된 시간
    disk 디스크로부터 읽은 블록 수
    query Consistent 모드에서 읽은 버퍼 블록 수
    current Current모드에서 읽은 버퍼 블록수
    rows 각 단계에서 읽거나 갱신한 처리건수
  • Auto Trace의 실행통계 항목과 비교하기
       
    db block gets current
    consistent gets query
    physical reads disk
    SQL*Net roundtrips to/from client fetch count
    rows processed fetch rows
  • 오라클은 오래전부터 다양한 종류의 이벤트 트레이스를 제공해 왔고, 이를 통해서도 SQL트레이스를 걸수 있다.
(2) 다른 세션에 트레이스 걸기
  • 성능문제가 발생한 SQL이 확보되지 않았다면, 커넥션 Pool에 놓인 세션 또는 시스템 레벨로 트레이스를 걸어 SQL정보를 수집해야한다.
(3) Service, Module, Action단위로 트레이스 걸기
  • 최근의 n-TIer 주고의 애플리케이션은 WAS에서 DB와 미리 맺어놓은 커넥션 풀에서 세션을 할당받으므로 특정 프로그램 모듈이 어떤 세션에서 실행될지 알수 없고, 한 모듈내에서 여러 SQL을 수행할때 각각 다른 세션을 통해 처리될 수도 있다.
  • 그러므로 한모듈만 트레이스를 거는것도 어렵고, WAS에서 맺은 세션에만 크레이스를 건 다음에 모든 트레이스 파일을 뒤져 찾는것도 어렵다.
  • 10g부터 service, module, action별로 트레이스를 설정하고 해제할 수 있는 dmms_monitor패키지가 소개되면서 위의 불편함이 사라진다.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. 11월 28, 2009

    오정희 says:

    SQL트레이스에 관한 자세한 내용은 강정식군의 세미나 자료가 최고! 그만한 자료가 없으니, 그 자료를 받아 보세요~

    SQL트레이스에 관한 자세한 내용은 강정식군의 세미나 자료가 최고!

    그만한 자료가 없으니, 그 자료를 받아 보세요~

  2. 2월 09, 2010

    장태길 says:

    Weblogic 환경에서 Oracle Tracing 하기 WEBLOGIC - CONNECTION POOL - STATEMENT CACHE SI...

    Weblogic 환경에서 Oracle Tracing 하기

    WEBLOGIC - CONNECTION POOL - STATEMENT CACHE SIZE 값을 "0" 으로 설정해야
    정상적인 Trace 가 가능하다.
    STATEMENT CACHE SIZE 가 0보다 클 경우 Row Source Operation 이 정상적으로 출력되지 않는다.