8

sqlplus が実行したステートメントを出力する方法はありますか。つまり、bash スクリプトで実行する .sql ファイルがいくつかあるということです。ログ ファイルを読んだときに、どのステートメント sqlplus が実行されたかを知る必要があります。

例: 次の test.sql ファイルがあるとします。

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

ログを確認すると、次のようになります。

Table created.

Elapsed: 00:00:00.02

Table created.

Elapsed: 00:00:00.01

これは有益ではありません。次のような出力を得る方法はありますか?

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 を記述するのは面倒です。

編集:

Allan の解決策が常に機能する (つまり、" set echo on " を使用する) ためには、次のことを避ける必要があります。

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

2) 次のように、スクリプトを sqlplus に "cat" しないでください。

cat test.sql | sqlplus scott/tiger@orcl
4

2 に答える 2

19

探しているコマンドはSET ECHO ON、発行された各ステートメントを繰り返す です。

于 2013-05-09T16:09:03.020 に答える
-2

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

于 2013-05-09T16:14:45.557 に答える