获得中间线轴输出

时间:2013-02-16 12:41:15

标签: sql oracle spool

我正在使用oracle 11g,并且我有一个带有'spool on'的sql文件,它运行至少7个多小时,因为它必须假脱机大数据。但是只有当整个sql完成时才会转储假脱机输出,但是我想知道是否还有其他方法可以知道我的sql的进度,或者数据假脱机直到那个时间点,所以我放心,我的sql是按预期正常运行。请帮助您提供意见。

1 个答案:

答案 0 :(得分:1)

听起来你正在使用DBMS_OUTPUT,它总是在程序完成后才开始实际输出结果。

如果您想要实时/接近时间监控进度,您有3个选项:

  1. 使用utl_file写入OS文件。您需要访问db server OS文件系统。

  2. 写入表并使用PRAGMA AUTONOMOUS_TRANSACTION,这样您就可以提交日志表条目而不会影响主要处理。这很容易实现,并且易于访问。以良好的方式实施,这可以成为所有程序的事实标准。然后,您可能需要实施某种管家服务,以避免这种情况变得过于庞大和笨拙。

  3. 快速而肮脏的选项是暂时的,是使用DBMS_APPLICATION.SET_CLIENT_INFO,然后查询v$session.client_info。这很好用,可以很好地跟踪事物,相当不引人注意,因为它的内存结构很快。

  4. DBMS_OUTPUT确实有限。