我正在使用SAS for Windows 9.2对Oracle数据库运行一个非常大的查询。这个查询非常大,我在WITH子句中编写了一个子查询并使用了4次。这在SQL PLUS和SQL Developer上运行正常,但是当我使用SAS运行它时,程序在20分钟后挂起,我甚至看不到日志窗口。我从未与SAS合作,也不确定如何继续,但尝试了以下选项:
有人可以指点我。如何使用ALTLOG命令将日志文件写入Windows文件系统,以便我能够理解确切的错误消息。顺便说一句,DBA已经提到查询运行正常并且从服务器端返回行,但由于某种原因,SAS程序无法显示此数据。我从查询中获得了大约45,000条记录。
由于
答案 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;
然后在配置文件的单独行中输入上面的选项。