PLSQL性能追踪DBMS_HPROF

原文链接:http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_profiler.htm#ADFNS023

 

1.创建目录存储追踪文件并授权SCOTT用户

CREATE DIRECTORY PLSHPROF_DIR as '/u01/app/oracle/private';

GRANT READ, WRITE ON DIRECTORY PLSHPROF_DIR TO SCOTT;

 

2. 简单的性能追踪

--创建测试用的PROC
CREATE OR REPLACE PROCEDURE test IS
  n NUMBER;
  PROCEDURE foo IS
  BEGIN
    SELECT COUNT(*) INTO n FROM emp;
  END foo;
BEGIN
  FOR i IN 1 .. 3 LOOP
    foo;
  END LOOP;
END test;
--性能追踪
BEGIN
  --打开性能监控
  dbms_hprof.start_profiling(location => 'PLSHPROF_DIR',--监控文件目录
                             filename => 'test.trc');--监控文件
  test;
  dbms_hprof.stop_profiling();--关闭
END;

 

3. 追踪文件介绍

性能监控过程执行完毕后会在PLSHPORF_DIR目录下生成文件test.trc,大体如下所示:

P#V PLSHPROF Internal Version 1.0
P#! PL/SQL Timer Started
P#C PLSQL."SCOTT"."TEST"::7."TEST"#980980e97e42f8ec #1
P#X 2
P#C PLSQL."SCOTT"."TEST"::7."TEST.FOO"#980980e97e42f8ec #3
P#X 7
P#C SQL."SCOTT"."TEST"::7."__static_sql_exec_line5" #5
P#X 182
P#R
P#X 6
P#R
P#X 2
P#C PLSQL."SCOTT"."TEST"::7."TEST.FOO"#980980e97e42f8ec #3
P#X 3
P#C SQL."SCOTT"."TEST"::7."__static_sql_exec_line5" #5
P#X 53
P#R
P#X 2
P#R
P#X 1
P#C PLSQL."SCOTT"."TEST"::7."TEST.FOO"#980980e97e42f8ec #3

P#V 版本说明

P#C 程序单元调用(调用事件)

P#R 程序单元的返回值(返回事件)

P#X 两个事件之间的执行时间

P#!  备注

以调用事件为例:

P#C PLSQL."SCOTT"."TEST"::7."TEST.FOO"#980980e97e42f8ec #3

PLSQL 命名空间,分为SQL和PLSQL

SCOTT.TEST 调用的程序单元所属的MODULE(其实就是程序单元的父级程序单元)

7   调用的程序单元所属MODULE的类型,7代表procedure?

TEST.FOO 正在调用的程序单元

#3    调用程序单元的行号

 

4. 监控文件转换成表存储

通过DBMS_HPROF.ANALYZE可以将监控文件test.trc可以转换成信息存储在表中

首先需要运行脚本$ORACLE_HOME/rdbms/admin/dbmshptab.sql创建存储监控信息的表:DBMSHP_RUNS,DBMSHP_FUNCTION_INFO,DBMSHP_PARENT_CHILD_INFO

然后运行analyze即可:

DECLARE
  runid NUMBER;
BEGIN
  runid := dbms_hprof.analyze(location => 'PLSHPROF_DIR',
                              filename => 'test.trc');
  dbms_output.put_line('runid = ' || runid);
END;

 

5. 监控文件生成HTML报告

如果$ORACLE_HOME/bin已经加入环境变量,可以直接在test.trc所在路径运行命令:plshprof -output report test.trc即可以生成html报告

posted on 2016-04-22 13:58  收苞米的拖拉机  阅读(681)  评论(0编辑  收藏  举报