Oracle PLSQL Procedure 如何进行性能调优分析

2014-11-24 17:38:00 · 作者: · 浏览: 0

在一次调优实战中,我就遇到了上面的情况,存储过程是性能问题所在,需要调优,这时就要用上 Oracle 提供的 DBMS_PROFILER package了。



它是 Oracle 提供的一个用于性能分析的工具包。从Oracle document 网站找的定义大致是说:


此package能收集PLSQL执行时的性能数据,开发人员可以使用这些数据用于程序分析以提高其运行速度。开发人员可以在一个Session中打开此工具,它会记录所有的“数据库对象(function、procedure这样的PLSQL代码)”的性能分析数据,“数据”包括每句代码的运行次数、运行时间、运行平均时间、最长运行时间、最短运行时间等信息。



用它进行性能分析的过程大概是这样的:安装DBMS_PROFILER package --》 初始化记录表 --》打开分析开关 --》 执行你的PLSQL --》去分析表里面找瓶颈所在 --》解决它。


以下详解:


2.1 启用DBMS_PROFILER


先查看是否已安装:


SQL> desc dbms_profiler


如没有安装,执行


SQL> @@C:\oracle\product\10.2.0\client_1\RDBMS\ADMIN\profload.sql


重置记录表,执行


SQL> @@C:\oracle\product\10.2.0\client_1\RDBMS\ADMIN\proftab.sql


2.2 执行你的PLSQL


begin
DBMS_PROFILER.START_PROFILER ('My Test‘);
--PLSQL 放在这里
DBMS_PROFILER.STOP_PROFILER;
end;


此段程序会先打开profiler 的设置,然后执行待测试的代码,最后再关闭profiler。这是一个典型的应用,DBMS_PROFILER也支持“暂停”,‘恢复“的操作:


DBMS_PROFILER.PAUSE_PROFILER ,DBMS_PROFILER.RESUME_PROFILER


然后就跑下这段代码,接下来就可以看分析数据了。


2.3查看分析数据


性能数据会被记录在下面的三张表里:


select * from PLSQL_PROFILER_RUNS ;
select * from PLSQL_PROFILER_UNITS ;
select * from PLSQL_PROFILER_DATA;


相关阅读