有人可以建议我们如何计算查询的实际执行情况。没有IO操作。
目前,我正在使用以下approch:
variable n number
exec :n := dbms_utility.get_time
PROMPT The time consumed with Function Call
SET SERVEROUTPUT ON;
variable n number
exec :n := dbms_utility.get_time
set term off;
select -- My Select Query
SET TERM ON;
exec dbms_output.put_line( dbms_utility.get_time - :n )
这是计算查询执行时间的正确方法吗?
答案 0 :(得分:1)
我想你要使用SQLTrace。
在运行查询之前:
ALTER SESSION SET sql_trace = true;
ALTER SESSION SET tracefile_identifier = [sqltrace_identifier_which_will_be_included_into_output_filename];
然后运行您的查询并将跟踪设置回OFF:
ALTER SESSION SET sql_trace = false;
现在您已生成跟踪文件。在USER_DUMP_DEST文件夹中查找跟踪文件。 但它不是人类友好的。 使用tkprof实用程序将其转换为可读格式(替换" input.trc"使用您的文件名。您的文件名包含您设置为tracefile_identifier参数的标识符):
tkprof input.trc output.prf
读取output.prf文件并享受:)
一些详细的解释:
http://www.orafaq.com/wiki/SQL_Trace http://www.orafaq.com/wiki/TKProf