2017-07-30 5 views
0

sqlplusを使用していくつかのsqlを実行しているバッチファイルがあります。次のように コマンドが行く:バッチ+オラクル、レスポンスを無効にしても実行時間が得られる

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 

私は本当にこの出力のように行いますが、結果ははるかにあります。しばしば長いクエリの実行時間をテストしたいのですが、結果を実際に通過するのは本当に帯域の無駄です。また、私のログファイルは巨大で実用的ではなく、むしろ他のすべての情報を含む小さなログがあります。

​​

しかし、最初の1時間と古い/新しいステートメントを含むすべての出力、及び第二の一つの他のファイルにコピーするだけの結果をせずに削除します。

は私のような他のヘッダを追加してみました何かを私のログファイルに変更する。

私は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

関連する問題