performance - 如何分析 Oracle 存储过程的端到端性能

标签 performance oracle stored-procedures plsql oracle10g

我想知道我的存储过程从外部进程访问数据库并说执行此操作到数据库返回到进程并说到这里来执行需要多长时间。

有没有一种简单的方法来完成这项非常基本的任务?

当然,关于存储过程执行期间发生的事情以及存储过程在每个任务(插入、plsql 字符串操作等)上花费了多少时间的报告将是一个奖励,但我真的只想要一些简单易行的东西用。 (而且免费)

最佳答案

如果您使用的是 Oracle 11g,您应该查看层次分析器 DBMS_HPROF。这是一个工具,它将为您提供 PL/SQL 程序中所有节点的耗时。顾名思义,它对于调查调用程序的程序特别有用。它还标识与函数调用不同的 SQL 语句的计时。 Find out more .

它是标准 11g 部署的一部分,因此是免费的。好吧,一旦您支付了许可证费用,它就是免费的 :)

默认情况下,DBMS_HPROF 包的权限不会授予任何人。因此,您需要找一个具有 SYSDBA 访问权限的人才能正确地看到您。分析还需要创建一些表。这些事情都不应该是一个问题,但我知道有时它们是。

唉,你使用的是早期版本。这样就只剩下 DBMS_PROFILER,它从 9i 开始就存在了。这基本上适用于单个程序。它的主要缺点是我们只能在我们拥有 CREATE 权限的程序上使用它(即只有我们模式中的程序,除非我们有 CREATE ANY PROCEDURE 权限,这通常意味着成为 DBA)。此外,为了分析嵌入式 SQL 语句,我们需要使用 DBMS_TRACE 包。 Find out more.

关于performance - 如何分析 Oracle 存储过程的端到端性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663913/

相关文章:

python - 将多个数组值匹配到 csv 文件中的行很慢

oracle - 是否可以使用 sqoop 导入表并添加额外的时间戳列?

sql - Oracle 10g 中的数据透视表/交叉表查询(动态列号)

sql-server - 字段未修复时使用 Pivot 的 SQL 查询

mysql - 学习存储过程,简单查询(IN ... OUT ...)

mysql - 如何创建接受用户 ID 并返回用户全名和职业以及 1 个电子邮件地址的存储过程

mysql - 在 MySQL 对表进行分区时,这里如何使用 DIV 作为 HASH 分区定义的一部分?

javascript - 适用于桌面的类似 jsPerf 的应用程序

python - 在 Python 中使用 Numpy 或 Pandas 查找整数可以驻留的最接近的边界值对

oracle - 以 SYSDBA 身份运行 Oracle IMP