【问题标题】:SAS 9.2 running Oracle query indefinitelySAS 9.2 无限期运行 Oracle 查询
【发布时间】:2012-08-07 15:26:42
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 请发布您现有的完整 SAS 程序(PROC SQL 部分)。您在下面的评论说您正在使用 ODBC 访问方法,大概是因为您没有 SAS/Access to Oracle 的许可证。
  • 还要注意 Vasja 的评论;如果您只是在执行 SELECT,则输出可能会进入您的输出窗口,该窗口正在填满,SAS 可能会提示您一条消息。

标签: oracle sas


【解决方案1】:

我分为两点:

1) 在未使用 SAS 的情况下在 SAS 中运行现有的 Oracle SQL 查询: 对您来说最好的方法是将 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” 

相反的选项是缓冲的。

要找出使用的配置文件,请在 SAS 会话中运行以下命令:

proc options option=config;run;

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

【讨论】:

  • 是的,我正在使用 proc sql 和 oralce odbc 连接运行查询。我尝试使用 Tools-->Otions-->System 更改 LOGPARM 值,但由于某种原因,当我选择 Modify Value 时没有任何反应。
  • 您只能在启动 SAS 程序时定义 LOGPARM 选项。它必须在配置文件中或作为命令行选项进行设置。
  • @BobDuell 您能否详细说明设置 LOGPARM 选项。我在配置文件中没有看到这个选项。如何使用 SAS 命令行进行设置?请告诉我。
  • 查看 Vasja 的修订答案;要设置 LOGPARM 选项,您需要将该行添加到配置文件 作为批处理脚本的命令行选项。但这可能不是你的问题。请出示您的代码。
  • 我一夜之间离开了查询,看到一条错误消息“Windows 日志已满”,然后在谷歌上搜索了一下,我在配置文件中设置了 -dmsoutsize 999999 和 -dmslogsize=999999。现在我可以运行查询了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
相关资源
最近更新 更多