我在11g R2 DB中有一个pl/sql包,其中包含相当数量的相关过程和函数。我执行一个顶级函数,它做了很多事情。它当前每秒处理 10 行<。我想提高性能,但我不确定要关注哪个例程。
对于Oracle的"PL/SQL分层分析器(DBMS_HPROF)"来说,这似乎是一个很好的工作 作为一个懒惰的人,我希望SQLDeveloper v3.2.20.09或Enterprise Manager能够通过点击界面做我想做的事情。我找不到这个。
有没有一种"简单"的方法来分析过程/包中的实际PL/SQL代码?
我使用企业管理器的"热门活动"部分优化了包中的查询,查看了所有花费很长时间的查询。现在我只有一个"执行PL/SQL"出现,我需要将其分解为至少调用的过程和函数,以及它们所花费的时间百分比。
此处记录的PL/SQL分层探查器实际上非常容易运行,假设您具有必要的权限。
基本上你只需要运行这样的PL/SQL块:
begin
dbms_hprof.start_profiling('PLSHPROF_DIR', 'test.trc');
your_top_level_procedure;
dbms_hprof.stop_profiling;
end;
plshprof
实用程序将从原始探查器输出文件生成 HTML 报告(test.trc
在上面的示例中)。