计算oracle中查询的实际执行情况

时间:2014-04-02 10:30:07

标签: sql oracle oracle11g sqlplus

有人可以建议我们如何计算查询的实际执行情况。没有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 )

这是计算查询执行时间的正确方法吗?

1 个答案:

答案 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