2013-05-09 15 views
5

sqlplusが実行したステートメントを印刷する方法はありますか。 私はbashスクリプトで実行するいくつかの.sqlファイルを持っています。 sqlplusが実行したログ・ファイルをいつ読むかを知る必要があります。sqlplus実行ステートメントの実行

例:有益ではありません

Table created. 

Elapsed: 00:00:00.02 

Table created. 

Elapsed: 00:00:00.01 

:私はこれを取得ログをチェックすると

set timing on 
create table foo (a varchar2(10)); 
create table bar (b varchar2(10)); 
exit 

: は、私は、このtest.sql内のファイルを持っていると言います。

Table foo created. 

Elapsed: 00:00:00.02 

Table bar created. 

Elapsed: 00:00:00.01 

、さらには、このように:

create table foo (a varchar2(10)); 

Table created. 

Elapsed: 00:00:00.02 

create table bar (b varchar2(10)); 

Table created. 

Elapsed: 00:00:00.01 

私はそれぞれの文の前にPROMPTを使用することができます知っているが、私は大きなSQLスクリプトを持っており、それは次のようになり、私はこのような出力を得ることができる方法はあります各ステートメントの前にPROMPTを書くのは面倒です。

EDIT:

はアランのソリューションは常に、あなたが避けるべきである(すなわち、 "にセットエコー" を使用して)仕事をするために、次の

1)-Sオプションを使用しないでくださいsqlplusを使用すると、コマンドのエコー表示が抑制されるためです。

2)は次のようにSQLPLUSしない「猫」スクリプトを実行します。

cat test.sql | sqlplus scott/[email protected] 

答えて

12

あなたが探しているコマンドが発行されたインクルード各ステートメントを繰り返すことになりますSET ECHO ON、です。

+1

ありがとうございました。これは2つのことを避けることによって機能しました。更新された質問を参照してください。 – Younes

+0

これは '@ script.sql'を実行しているときには動作しません。その場合、スクリプト内のコマンドはエコーされますが、元のコマンド( '@ script.sql')はエコーされません。トレーサビリティの目的のために、私は本当にログに記録されるユーザコマンドが必要です。 –

+0

(他のすべての場合、 'set echo on'はうまくいく) –

0

オブジェクトの正確な作成時間を知る必要がある場合は、CREATED列に対してDBA_OBJECTSまたはALL_OBJECTSを問い合せることができます。

関連する問題