批+ Oracle,禁用响应,但仍然得到执行时间

问题描述:

我有一个批处理文件,通过sqlplus为我运行一些SQL。 命令去如下:批+ Oracle,禁用响应,但仍然得到执行时间

sqlplus user/[email protected] @file.sql param1 param2 ... >> LOG.txt 

通过浏览互联网我也发现,有可能通过增加这些线路的SQL文件获得时间:

SET TIMING ON 
...sql operation... 
SET TIMING OFF 

这给了我一个非常因为现在看起来像这样:

SQL*PLUS INFORMATION 
COPYRIGHT 
INFORMATION ABOUT THE CONNECTION 
OLD/NEW STATEMENT 
RESULTS 
ROWS SELECTED 
EXECUTION TIME 
DISCONNECT MESSAGE 

我真的很喜欢这个的输出,但结果很多。通常我想测试长查询的执行时间,但通过结果真的是带宽的浪费。这也使我的日志文件变得庞大而不切实际,我宁愿有一个小日志和所有其他信息。

我尝试添加其他标题,例如:

​​

但第一个删除所有输出,包括时间和旧/新语句,而第二个只是复制结果到其他文件,而无需改变任何东西到我的日志文件。

我正在考虑把我的请求包装在PLSQL块中,但是我不能再使用TIME标头了吗?

无论如何,如果你们知道头部/其他组件可以解决我的问题,请随时分享!

谢谢你的时间。

一种方法是使用SQLPLUS绑定变量在脚本中存储的开始时间,并计算查询的执行时间:

var start_time varchar2; 

exec :start_time := to_char(current_timestamp, 'yyyy-mm-dd hh24:mi:ss.SSSSS'); 

/* Long runing query */ 
BEGIN 
DBMS_LOCK.sleep(5); 
END; 
/

SELECT current_timestamp - to_timestamp(:start_time, 'yyyy-mm-dd hh24:mi:ss.SSSSS') 
     As total_ececution_time 
from dual; 

结果是:

PL/SQL procedure successfully completed. 


PL/SQL procedure successfully completed. 


TOTAL_ECECUTION_TIM 
------------------- 
+00 00:00:05.471000 
+0

大回答,非常感谢您的先生。为我完美工作! – Moufett