如何轻松分析 Oracle 包的执行以发现性能问题?
Posted
技术标签:
【中文标题】如何轻松分析 Oracle 包的执行以发现性能问题?【英文标题】:How can I easily analyze an Oracle package's execution for performance issues? 【发布时间】:2013-11-04 15:33:08 【问题描述】:我在一个 11g R2 DB 中有一个 pl/sql 包,它有很多相关的过程和函数。我执行一个***函数,它做了很多事情。它目前每秒处理
对于 Oracle 的“PL/SQL 分层分析器 (DBMS_HPROF)”来说,这似乎是一项不错的工作一个点击界面。我找不到这个。
是否有一种“简单”的方法来分析过程/包中的实际 PL/SQL 代码?
我使用 Enterprise Manager 的“Top Activity”部分优化了包中的查询,查看了所有需要很长时间的查询。现在我只有一个“执行 PL/SQL”出现,我需要将其分解为至少被调用的过程和函数,以及它们占用的时间百分比。
【问题讨论】:
去阅读这个 - docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_profil.htm 谢谢,Oracle 遇到的一个问题是,当我想知道现在几点时,他们似乎想告诉我如何制作手表。我怀疑如果我读到那个和/或这个docs.oracle.com/cd/E11882_01/appdev.112/e41502/…,我可能会弄清楚如何做我需要做的事情,这将非常有启发性,并且我将成为一个更好的人/程序员。但我想做的只是找出哪些该死的程序花费的时间最多。 DBMS_PROFILER 会为您做到这一点。使用起来并不难。它会在一个漂亮的 html 报告中显示每一行代码的时间。 【参考方案1】:PL/SQL Hierarchical Profiler,文档为 here,实际上非常容易运行,前提是您拥有必要的权限。
基本上你只需要像这样运行一个 PL/SQL 块:
begin
dbms_hprof.start_profiling('PLSHPROF_DIR', 'test.trc');
your_top_level_procedure;
dbms_hprof.stop_profiling;
end;
plshprof
实用程序将从原始分析器输出文件(上例中的test.trc
)生成 HTML 报告。
【讨论】:
谢谢,我会尝试翻阅文档,找出 Oracle 无疑会吐出的所有错误,也许它会提供一些有用的东西。我所希望的是 SQLDeveloper 或 Oracle Enterprise Manager 中的一些东西,它可能会使它变得更简单。 还不错,我只需要启用包,授予权限,创建表,一般会花 20 分钟左右。一旦我运行了它和 plshprof,我就有了一组可爱的 html 文件,没有很容易找到像样的文档。我知道这听起来像是我在抱怨,但天哪,Oracle 不能把一些易于使用且易于理解的东西放在一起吗?有谁知道我在哪里可以找到关于 plshprof 输出的像样的文档? 您是否使用DBMS_HPROF.analyze
继续输出?文档中描述了所有可用的报告以上是关于如何轻松分析 Oracle 包的执行以发现性能问题?的主要内容,如果未能解决你的问题,请参考以下文章
分析oracle的执行计划(explain plan)并对对sql进行优化实践