oracle - 如何轻松分析 Oracle 包执行的性能问题?

标签 oracle plsql oracle11g

我在 11g R2 DB 中有一个 pl/sql 包,它有相当多的相关过程和函数。我执行一个顶级函数,它做了很多事情。它当前每秒处理 < 10 行。我想提高性能,但我不确定要关注哪些例程。

对于 Oracle 的“PL/SQL 分层分析器 (DBMS_HPROF)”来说,这似乎是一项不错的工作 作为我这个懒惰的人,我希望 SQLDeveloper v3.2.20.09 或 Enterprise Manager 能够做我想做的事情&点击界面。我找不到这个。

是否有一种“简单”的方法来分析过程/包中的实际 PL/SQL 代码?

我使用 Enterprise Manager 的“Top Activity”部分优化了包中的查询,查看了所有需要很长时间的查询。现在我只有一个“执行 PL/SQL”出现,我需要将它至少分解成被调用的过程和函数,以及它们占用的时间百分比。

最佳答案

PL/SQL 层次分析器,记录在案 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 - 如何轻松分析 Oracle 包执行的性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19771192/

相关文章:

oracle - 将字符串拆分为变量

sql-server - 如何将包含START WITH…CONNECT BY子查询的 View 转换为SQL Server?

sql - 在 Oracle 中获取与最大和最小行相关的值

sql - Oracle 模式表行数

sql - 在oracle 12c上用ROWNUM锁定的更新跳过

mysql - 我如何访问该数据库文件? (*。他## ...)

创建自动编号的 Oracle 触发器

java - entity.merge后如何获取主键

c# - 用于 .NET/Oracle 数据交换的关联数组与 UDT 表

oracle - 将 PL/SQL 脚本转换为存储过程