我想衡量Oracle中存储过程的执行时间。我已经了解了在开始和结束时在临时日志表中写入条目的技术,但是无法使用该技术。
您能推荐我使用开源/免费工具吗?
谢谢!
答案 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.
答案 1 :(得分:0)
可以使用以下命令记录存储过程的开始/结束时间
DBMS_UTILITY.get_cpu_time
或DBMS_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中每一行的统计信息,包括执行次数,总时间,最小和最大。