请问各位大虾,如何在oracle存储过程或者pl/sql程序段中使用spool的时候,随时能输出信息?环境是shell。目前的代码如下:
sqlplus -s $DBLOGIN<<EOF
SET HEADING OFF
SET PAGESIZE 0
SET FEEDBACK OFF
SET FLUSH ON
SET VERIFY OFF
SET ECHO ON
SET TERMOUT ON
set serveroutput on
spool $MYPATH/log/spool.log;
declare
……
begin
……
loop
……
dbms_output.put_line('xxx record done.');
……
end loop;
……
end;
/
spool off;
exit;
EOF
目前的代码运行效果是:执行此程序段需要10分钟,那么这段时间内所有需要输出的信息必须等到执行完毕才能输出到log中。而我希望能在程序执行中随时输出或者控制每隔一定数量输出信息到log文件中(可能是把buffer中的信息强制刷新到文件中)。请问有什么解决办法?谢谢!
sqlplus -s $DBLOGIN<<EOF
SET HEADING OFF
SET PAGESIZE 0
SET FEEDBACK OFF
SET FLUSH ON
SET VERIFY OFF
SET ECHO ON
SET TERMOUT ON
set serveroutput on
spool $MYPATH/log/spool.log;
declare
……
begin
……
loop
……
dbms_output.put_line('xxx record done.');
……
end loop;
……
end;
/
spool off;
exit;
EOF
目前的代码运行效果是:执行此程序段需要10分钟,那么这段时间内所有需要输出的信息必须等到执行完毕才能输出到log中。而我希望能在程序执行中随时输出或者控制每隔一定数量输出信息到log文件中(可能是把buffer中的信息强制刷新到文件中)。请问有什么解决办法?谢谢!
SET HEADING OFF
SET PAGESIZE 0
SET FEEDBACK OFF
SET FLUSH ON
SET VERIFY OFF
SET ECHO ON
SET TERMOUT ON
set serveroutput on
spool $MYPATH/log/spool.log;
declare
……
begin
……
loop
……
dbms_output.put_line('xxx record done.');
……
end loop;
……
end;
/
spool off;
exit;
EOF
然后直接监控sql.log
tail -f sql.log