Oracle SQL 过程跟踪

Oracle SQL Procedure Tracing

我有一个包里面有几个程序

create or replace PACKAGE DAT_REPORT_V2 AUTHID CURRENT_USER AS 

  /* TODO enter package declarations (types, exceptions, methods etc) here */ 
    PROCEDURE LOAD_CONFIG;
    PROCEDURE AUX_TABLES; -- Data by CA
    PROCEDURE GEN_VIEWS;
    PROCEDURE PENDING_PROFORMAS;

END DAT_REPORT_V2;

找到每个过程中最慢的操作的最佳方法是什么?

到目前为止,我已经尝试过这个探查器选项(选中 Gather SQL Statistics),但它随后要求一个路径来存储一些文件并最终失败(在我执行的步骤之后m 要求提供user/password,我介绍我的)。

首先将警告对话框中的文本和运行复制为sysdba(在sql开发人员或sqlplus中)

sql>sqlplus / as sysdba
sql>CREATE OR REPLACE directory PLSHPROF_DIR as '/tmp';
sql>grant READ, WRITE on directory PLSHPROF_DIR to OT;
sql>grant execute on DBMS_HPROF to OT;
sql>grant create table to OT;
sql>grant create sequence to OT;
sql>grant unlimited tablespace to OT;

对于数据库 18c 及更高版本,以用户身份登录并使用过程创建表

SQL> conn ot/ot@orclpdb
Connected.
SQL> EXEC DBMS_HPROF.create_tables;

PL/SQL procedure successfully completed.

一旦必要,就会创建表和目录 运行 来自 SQL Developer 的探查器,它会在数据库服务器上的 tmp 文件夹中生成 html 和跟踪文件。