【问题标题】:How to build statistics on a procedures execution in oracle 12.2?如何在 oracle 12.2 中建立程序执行的统计信息?
【发布时间】:2020-07-26 09:17:12
【问题描述】:

我有一个~2,300 行的包,它被分成许多程序和功能。它的运行速度比我想要的慢。许多年前,在 Oracle 的先前版本(9i 或 11g)上,我遇到了类似的问题,我能够构建一个层次结构,其中包含在过程/包中执行的所有内容以及在每个项目上花费了多少时间。

我似乎找不到说明如何完成此操作的教程/博客。它可能是通过 DBMS_STATS 包完成的,但我发现 Oracle 的文档不适用于面向任务的问题解决。如果您想了解有关某个主题的所有知识可能会很好,但通常我只需要知道如何解决我目前正在处理的问题。

无论如何,有人可以指出我如何获得运行 Oracle 过程的运行时统计信息吗?

【问题讨论】:

标签: oracle performance plsql oracle12c


【解决方案1】:

有两种选择:

  1. dbms_profiler - 记录每个执行语句的时间。 docs
  2. dbms_hpof - 类似,但收集有关 pl/sql 调用层次结构的统计信息docs

这两种方法都需要使用 SYS (dba) 访问进行一些设置。 Setup Instuctions for dbms_profiler

【讨论】:

    【解决方案2】:

    您是否尝试过 THIS 帖子中描述的 dbms_utility.get_time 方法。

    链接到与您的问题几乎相同的原始问题。

    https://www.quora.com/How-can-I-log-the-execution-time-of-a-stored-procedures-in-a-table-in-Oracle-database

    【讨论】:

    • 这不是一个好方法,因为您必须在代码中插入调用。 DBMS_PROFILER 无需任何其他工具即可完成所有这些工作。
    • @OldProgrammer 感谢您的提醒。我不知道 DBMS_PROFILER。
    • @Oldprogrammer 所说的。添加代码需要对过程和功能进行大量修改。
    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2021-03-20
    • 2011-01-07
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多