Oracle测量存储过程的执行时间

mtn*_*doe 2 sql oracle plsql stored-procedures sqlplus

我想测量Oracle中存储过程的执行时间。我已经了解了在开始和结束时在临时日志记录表中写入条目的技术,但无法使用此技术。

您能给我推荐一个开源/免费工具吗?我可以使用它来执行此操作?

谢谢!

GMB*_*GMB 5

答案取决于您所使用的环境。

如果您使用SQLPlus,您可以启用计时器,如下所示:t

SQL> set timing on
Run Code Online (Sandbox Code Playgroud)

然后,只需执行您的程序,例如:

SQL> exec my_procedure;
Run Code Online (Sandbox Code Playgroud)

该过程完成后,将显示一个摘要行,例如:

PL/SQL procedure successfully completed.

Elapsed: 00:00:03.05
Run Code Online (Sandbox Code Playgroud)

在PL/SQL中,您可以使用dbms_utility.get_time

DECLARE 
    start_time pls_integer;
BEGIN
    start_time := dbms_utility.get_time;
    exec my_procedure;
    dbms_output.put_line((dbms_utility.get_time - start_time)/100 || ' seconds');
END;
/
Run Code Online (Sandbox Code Playgroud)

应该输出类似:

3 seconds

PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)

请参阅Tom Kyte 的精彩解释