SAS 9.2无限期地运行Oracle查询

时间:2012-08-06 19:39:51

标签: oracle sas

我正在使用SAS for Windows 9.2对Oracle数据库运行一个非常大的查询。这个查询非常大,我在WITH子句中编写了一个子查询并使用了4次。这在SQL PLUS和SQL Developer上运行正常,但是当我使用SAS运行它时,程序在20分钟后挂起,我甚至看不到日志窗口。我从未与SAS合作,也不确定如何继续,但尝试了以下选项:

  • 我创建了一个SAS代码文件并从windows批处理文件中运行它,希望将日志写入windows文件系统,但即使这样运行 - 我也没有看到任何写入日志文件的内容

有人可以指点我。如何使用ALTLOG命令将日志文件写入Windows文件系统,以便我能够理解确切的错误消息。顺便说一句,DBA已经提到查询运行正常并且从服务器端返回行,但由于某种原因,SAS程序无法显示此数据。我从查询中获得了大约45,000条记录。

由于

1 个答案:

答案 0 :(得分:1)

我会把它分成两点:

1)在SAS中运行现有的Oracle SQL查询而不使用SAS: 最好的方法是将Oracle SQL代码嵌入到所谓的PROC SQL显式传递中:

proc sql;
    connect to oracle as db1 (user=user1 pw=pasw1 path=DB1);
    create table test_table as
    select *
    from connection to db1
        ( /* here we're in oracle */
                  select * from test.table1 where rownum <20 
                )
    ;
    disconnect from db1;
quit;

(借鉴我对另一个问题的回答Limiting results in PROC SQL) 关键是不要试图将其转换为SAS SQL(不知道你是否尝试过)。

还要确保从查询结果创建SAS表(如示例中所示),而不是将其写入SAS OUTPUT窗口。

2)关于获取日志:关于操作的日志通常在完成后写入,因此如果查询实际上运行了很长时间,您将看不到任何中间日志。 无论如何,日志缓冲是批处理作业的默认设置,因此在缓冲区已满后写入日志消息。 要将日志消息立即写入日志文件集LOGPARM选项:

-LOGPARM= “WRITE=IMMEDIATE” 

相反的选项是BUFFERED。

要查找在SAS会话中运行的配置文件:

proc options option=config;run;

然后在配置文件的单独行中输入上面的选项。