ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Profiler使用简介

Profiler使用简介

原创 Linux操作系统 作者:dbs101 时间:2013-04-06 16:47:25 0 删除 编辑
总是有开发人员问某个存储过程的性能下降了,当存储过程的代码很长的时候,想找出某行代码性能下降非常消耗时间。这时profiler和10046都是比较好的工具来定位问题。

Profiler是用来收集plsql代码中每一行代码运行的性能数据。这些数据保护每行代码执行了多少次,总共花了多少时间,最大和最小时间。而且不用修改代码和debug。

Profiler的安装很简单。

1. 首先要创建dbms_profiler的package。dbms_profiler是用来开始和结束profiling的。以sysdba的权限运行$ORACLE_HOME/rdbms/admin/profload.sql,安装完后,使用desc dbms_profiler来验证是否安装成功。

2. 创建完dbms_profiler package后,还需要创建保存每行代码性能数据的表。以执行package的用户运行$ORACLE_HOME/rdbms/admin/proftab.sql来创建。

运行完成后,下列表将会生成。
表:PLSQL_PROFILER_RUNS
表:PLSQL_PROFILER_UNITS
表:PLSQL_PROFILER_DATA
序列号:PLSQL_PROFILER_RUNNUMBER

Profiler的使用也很简单。

begin
   DBMS_PROFILER.START_PROFILER('TEST_PROFILER');
   TEST_PROC;
   DBMS_PROFILER.STOP_PROFILER();
end;
/

查看Profiler执行的性能数据:

SELECT u.runid, u.unit_number, u.unit_type, u.unit_owner, u.unit_name, 
       d.line#, d.total_occur, d.total_time, d.min_time, d.max_time 
FROM   plsql_profiler_units u 
       JOIN plsql_profiler_data d ON u.runid=d.runid AND u.unit_number=d.unit_number 
WHERE  u.runid=2 
ORDER BY u.unit_number, d.line#; 

也可以用profiler.sql生成html形式的报告。

具体请参考metalink note 243755.1

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25105315/viewspace-757837/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: HINT - SQL语句暗示
请登录后发表评论 登录
全部评论
喜欢oracle、redis、mysql、pg数据库

注册时间:2010-12-18

  • 博文量
    94
  • 访问量
    473124