Oracle/SQL PLUS:如何假脱机日志并在整个脚本中间歇写入

Oracle/SQL PLUS:如何假脱机日志并在整个脚本中间歇写入,oracle,sqlplus,Oracle,Sqlplus,弄清楚如何假脱机到一个文件已经很容易了。我希望在写入每个命令后,都可以选择写入文本文件。我不知道如何向团队中的其他人传达长脚本的状态。我们想要的解决方案是在脚本执行时将日志文件写入网络驱动器,这样他们就可以继续执行 然而,这似乎只是在spool关闭后才将输出写入文件;命令位于文件末尾 有什么方法可以实现我们想要做的,通过假脱机日志文件或其他方法 这是我到目前为止的代码 set timing on; set echo on; column date_column new_value today_

弄清楚如何假脱机到一个文件已经很容易了。我希望在写入每个命令后,都可以选择写入文本文件。我不知道如何向团队中的其他人传达长脚本的状态。我们想要的解决方案是在脚本执行时将日志文件写入网络驱动器,这样他们就可以继续执行

然而,这似乎只是在spool关闭后才将输出写入文件;命令位于文件末尾

有什么方法可以实现我们想要做的,通过假脱机日志文件或其他方法

这是我到目前为止的代码

set timing on;
set echo on;

column date_column new_value today_var
select to_char(current_timestamp, 'yyyymmdd_HH24_MI') as date_column
  from dual
/
select current_timestamp from dual;

SPOOL 'Z:\log\KPI\secondary_reporting_&today_var..log'

... lots of stuff...
spool off;

据我所知,无法控制何时将假脱机输出写入文件。不过,解决这个问题的一种方法是完全放弃假脱机,只重定向输出:

$ sqlplus @/path/to/script.sql >& /path/to/script.log

根据你的“东西”是什么,我想到了两种方法

1) 如果您的代码有很多SQL语句和PL/SQL块,那么您可以重复执行一段时间的假脱机。为此使用
spool append
语句

SQL> help spool

 SPOOL
 -----

 Stores query results in a file, or optionally sends the file to a printer.
 In iSQL*Plus, use the Preferences screen to direct output to a file.

 SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]

 Not available in iSQL*Plus

2) 如果您有长时间运行的PL/SQL过程,请使用
UTL\u文件
包。有关更多信息,请参阅。这确实需要数据库中的一些设置和管理权限来设置一个允许写入的目录。

您可能希望先关闭中间假脱机,然后再附加假脱机,其中此命令的所有实例都是同一个文件。>>我不确定如何将长脚本的状态传达给团队中的其他人