Oracle衡量执行时间存储过程

时间:2018-12-15 18:21:52

标签: sql oracle stored-procedures plsql

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

您能推荐我使用开源/免费工具吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

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

如果您使用的是 SQLPlus ,则可以按以下方式启用计时器:t

SQL> set timing on

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

SQL> exec my_procedure;

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

PL/SQL procedure successfully completed.

Elapsed: 00:00:03.05

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;
/

应输出类似:

3 seconds

PL/SQL procedure successfully completed.

请参见this excellent explanation from Tom Kyte

答案 1 :(得分:0)

可以使用以下命令记录存储过程的开始/结束时间 DBMS_UTILITY.get_cpu_timeDBMS_UTILITY.get_time

例如

CREATE OR REPLACE PROCEDURE test_proc IS
BEGIN
 DBMS_OUTPUT.put_line('start time '||DBMS_UTILITY.get_time);
 <your statement>

DBMS_OUTPUT.put_line('end time '||DBMS_UTILITY.get_time);

END;

当然还有使用Profiler

查找执行时间的其他方法

也来看看this

答案 2 :(得分:0)

如果您想获得实际上可以帮助您诊断问题的详细信息,强烈建议使用dbms_profiler。

易于使用,并提供pl / sql中每一行的统计信息,包括执行次数,总时间,最小和最大。