2017-07-30 52 views
0

我有一個批處理文件,通過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標頭了嗎?

無論如何,如果你們知道頭部/其他組件可以解決我的問題,請隨時分享!

謝謝你的時間。

回答

0

一種方法是使用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

相關問題