트러블슈팅 오라클 퍼포먼스 2판 (2017년)
DBMS_PROFILER 0 0 47,636

by 구루비스터디 DBMS_PROFILER DBMS_HPROF PLSHPROF [2023.09.08]


DBMS_HPROFDBMS_PROFILER
계층형 프로파일러(권장)라인 레벨 프로파일러
활성화 시 매우 작은 오버헤드
호출 레벨의 정보 제공
Self time 과 Total time 개념 모두 지원
추가 권한 불필요
네이티브 컴파일 된 PL/SQL 지원
라인 레벨 정보 제공
11.1 이전 버전에서 사용 가능
모든 주요 개발도구에서 지원


DBMS_PROFILER

세션 레벨에서 라인 레벨 프로파일러 제공
  • 라인 별 수집 정보
    • 실행된 총 횟수
    • 실행하는 데 소모한 총 시간
    • 실행하는 데 소모한 최대/최소 시간


  • 조건
    • 랩핑 X
    • 네이티브 모드 컴파일 X
    • 사용자 CREATE 권한 (소유자 혹은 CREATE ANY 권한 보유)


  • 저장
    • PLSQL_PROFILER_RUNS : 프로파일링 세션 정보
    • PLSQL_PROFILER_UNITS : 실행별로 수행된 유닛 목록
    • PLSQL_PROFILER_DATA : 코드 라인 프로파일링 데이터


출력 테이블 설치하기

  • @?/rdbms/admin/proftab.sql 으로 테이블 생성 후 SYNONYM & GRANT 처리


프로파일링 데이터 수집하기

dbms_profiler 패키지 내 프로시저(함수)내용
start_profiler프로파일러 활성화
flush_data프로파일링 데이터를 출력 테이블에 저장
stop_profiler플러시 & 프로파일러 비활성화
pause_profiler프로파일링 일시 중지
resume_profiler프로파일링 재개



SELECT dbms_profiler.start_profiler AS status
FROM dual;

  STATUS
--------
       0

execute perfect_triangles(1000)

SELECT dbms_profiler.stop_profiler AS status,
       plsql_profiler_runnumber.currval AS runid
FROM dual;

  STATUS    RUNID
-------- --------
       0        1


프로파일링 데이터 보고서 수동 생성하기

  • 3개 테이블을 쿼리로 조회 가능 (p.135)
  • 쿼리에서 응답시간은 백분율만 제공
    • 가장 느린 부분을 파악하는 것이 목표
    • 시간 정보는 신뢰하기 어려움 (CPU 의존 코드의 경우 프로파일러 오버헤드 발생 : 1초미만 → 약7초소요 → 약4초측정)



SELECT s.line,
       round(ratio_to_report(p.total_time) OVER ()*100,1) AS time,
       total_occur,
       s.text
FROM all_source s,
     (SELECT u.unit_owner, u.unit_name, u.unit_type,
             d.line#, d.total_time, d.total_occur
      FROM plsql_profiler_units u, plsql_profiler_data d
      WHERE u.runid = &runid
      AND d.runid = u.runid
      AND d.unit_number = u.unit_number) p
WHERE s.owner = p.unit_owner (+)
AND s.name = p.unit_name (+)
AND s.type = p.unit_type (+)
AND s.line = p.line# (+)
AND s.owner = user
AND s.name = 'PERFECT_TRIANGLES'
AND s.type IN ('PROCEDURE', 'PACKAGE BODY', 'TYPE BODY')
ORDER BY s.line;


GUI 사용하기

  • PL/SQL Developer
  • SQLDetective
  • Dell Toad
  • SQL Navigator
  • Rapid SQL
"데이터베이스 스터디모임" 에서 2017년에 "전문가를 위한 트러블슈팅 오라클 퍼포먼스(Second Edition) " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4327

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입