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