PLSQL性能追踪DBMS_HPROF
2016-04-22 13:58
537 查看
原文链接:http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_profiler.htm#ADFNS023
1.创建目录存储追踪文件并授权SCOTT用户
2. 简单的性能追踪
3. 追踪文件介绍
性能监控过程执行完毕后会在PLSHPORF_DIR目录下生成文件test.trc,大体如下所示:
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即可:
5. 监控文件生成HTML报告
如果$ORACLE_HOME/bin已经加入环境变量,可以直接在test.trc所在路径运行命令:plshprof -output report test.trc即可以生成html报告
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报告
相关文章推荐
- Oracle 11g笔记——参数
- Oracle 11g笔记——后台进程
- 小白学习笔记------关于数据库报错“二进制字符截断”
- Oracle 11g笔记——Oracle内存结构
- oracle select into null的问题
- Oracle数据库性能优化杂谈
- MySQL 批量插入 Update时Replace
- Mysql之无法查询中文字解决办法
- SQL存储过程
- Memcached
- mysql Unknown system variable 'language'
- redis报错:jedis connection exception unexpected end of stream
- sql server 验证身份证号码有效性
- 【转】Redis 与 Memcached 的区别
- Ubuntu 12.04卸载MySQL
- Sqoop实现Mysql与HDFS互导数据,Mysql与Hbase,Oracle与Hbase的互导最后给出命令。
- Oracle切换undo表空间操作步骤
- 打开MySQL数据库远程访问的权限
- VBAOracle表解锁
- 基于Redis实现分布式锁,Redisson使用及源码分析