批+ 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
大回答,非常感谢您的先生。为我完美工作! – Moufett