DBMS_HPROF | DBMS_PROFILER |
---|---|
계층형 프로파일러(권장) | 라인 레벨 프로파일러 |
활성화 시 매우 작은 오버헤드 호출 레벨의 정보 제공 Self time 과 Total time 개념 모두 지원 추가 권한 불필요 네이티브 컴파일 된 PL/SQL 지원 | 라인 레벨 정보 제공 11.1 이전 버전에서 사용 가능 모든 주요 개발도구에서 지원 |
테이블 | 내용 |
---|---|
DBMSHP_RUNS | 프로파일링 세션 정보 |
DBMSHP_FUNCTION_INFO | 수행된 서브프로그램 목록 |
DBMSHP_PARENT_CHILD_INFO | 호출 하는/당하는 프로그램 간 관계 |
파라미터 | 정보 |
---|---|
location | 트레이스 파일이 저장 될 오라클 디렉터리 오브젝트 이름 |
filename | 트레이스 파일 이름 (존재 시 덮어씀) |
max_depth | 데이터 수집 호출 깊이 (NULL: 무제한) |
BEGIN
dbms_hprof.start_profiling(location => 'PLSHPROF_DIR',
filename => 'dbms_hprof.trc');
END;
/
SET TIMING ON
DECLARE
l_count INTEGER;
BEGIN
perfect_triangles(1000);
SELECT count(*) INTO l_count
FROM all_objects;
END;
/
BEGIN
dbms_hprof.stop_profiling;
END;
/
SELECT dbms_hprof.analyze(location => 'PLSHPROF_DIR',
filename => 'dbms_hprof.trc') AS runid
FROM dual;
SELECT sum(function_elapsed_time)/1000 AS total_ms,
100*ratio_to_report(sum(function_elapsed_time)) over () AS total_percent,
sum(calls) AS calls,
100*ratio_to_report(sum(calls)) over () AS calls_percent,
namespace AS namespace_name
FROM dbmshp_function_info
WHERE runid = &runid
GROUP BY namespace
ORDER BY total_ms DESC;
TOTAL [ms] TOT% CALLS CAL% NAMESPACE_NAME
---------- ------ ------- ----- --------------
565 54.9% 89 5.6 SQL
464 45.1% 1494 94.4 PLSQL
SELECT sum(function_elapsed_time)/1000 AS total_ms,
100*ratio_to_report(sum(function_elapsed_time)) over () AS total_percent,
sum(calls) AS calls,
100*ratio_to_report(sum(calls)) over () AS calls_percent,
namespace,
nvl(nullif(owner || '.' || module, '.'), function) AS module_name,
type
FROM dbmshp_function_info
WHERE runid = &runid
GROUP BY namespace, nvl(nullif(owner || '.' || module, '.'), function), type
ORDER BY total_ms DESC;
SELECT lpad(' ', (level-1) * 2) || nullif(c.owner || '.', '.') ||
CASE WHEN c.module = c.function THEN c.function ELSE nullif(c.module || '.', '.') || c.function END AS function_name,
pc.subtree_elapsed_time/1000 AS total_ms,
pc.function_elapsed_time/1000 AS function_ms,
pc.calls AS calls
FROM dbmshp_parent_child_info pc,
dbmshp_function_info p,
dbmshp_function_info c
START WITH pc.runid = &runid
AND p.runid = pc.runid
AND c.runid = pc.runid
AND pc.childsymid = c.symbolid
AND pc.parentsymid = p.symbolid
AND p.symbolid = 1
CONNECT BY pc.runid = prior pc.runid
AND p.runid = pc.runid
AND c.runid = pc.runid
AND pc.childsymid = c.symbolid
AND pc.parentsymid = p.symbolid
AND prior pc.childsymid = pc.parentsymid
ORDER SIBLINGS BY total_ms DESC;
$ plshprof -output dbms_hprof dbms_hprof.trc
-- 두개 트레이스 파일 지정 시 둘 사이 값의 차이(Delta) 표시
- 강좌 URL : http://www.gurubee.net/lecture/4326
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.