【问题标题】:run oracle reports from pl/sql procedure从 pl/sql 过程运行 oracle 报告
【发布时间】:2020-04-11 07:43:39
【问题描述】:

我正在重构 ORACLE Web 应用程序中的一个非常古老的报告生成功能。它使用 JavaScript 构建 URL,发送到报告服务器以运行报告。我想要做的是在数据库中处理它,在 PL/SQL 过程中(通过mod_pl/SQL 调用)。我尝试使用utl_http.begin_request 来执行此操作,但有时当输出文件很大(PDF 格式,大约 20 页,1.5M)时,我收到错误:

ORA-29259: end-of-input reached. 

发送请求的测试代码很简单:

--------2013/08/27 升级------------------ --------------------------

 UTL_HTTP.set_transfer_timeout(1000);
 --some params setting....
 myIdent := SRW.RUN_REPORT(myPlist);  --here raise the exception(ORA-29273:request_failed; ORA-29259: end-of-input reached.) and procedure stoped.
 r_stat := SRW.report_status(myIdent,myPlist);

@ThinkJet,感谢您的帮助。 登录报表服务器,发现程序中出现这个异常后报表还在运行,终于成功结束。我测试了很多次,发现每次启动请求后5分钟就出现异常,无论如何我正在运行的报告类型以及它的大小(当然,都是大尺寸,运行超过 5 分钟)。我想知道这是否与 Oracle 应用程序服务器上的配置有关?

有人知道吗?非常感谢。

【问题讨论】:

  • SRW 是随 Oracle Reports 一起安装的 event-driven publishing API 软件包。
  • 您是否使用utl_http.write_text 发布一些参数以报告并使用utl_http.read_raw 读取数据?你能发布用于调用报告的确切代码吗?
  • 嗨,@ThinkJet,参数已经在URL中,上面代码中的'rpt_url'字符串是“localhost/reports/…”。我只是发送请求,然后报表服务器会生成一个PDF,不需要读写或下载任何东西。所以测试代码和上面完全一样。
  • 抱歉,更新后也没有新想法。能否提供 SRW(srw.start_debugging and srw.stop_debugging)在调试模式下生成的输出?

标签: plsql oraclereports


【解决方案1】:

在 SRW.RUN_REPORT 时出现 ORA-29259 是 ias 10g ,这是由 httpd.conf 超时参数配置引起的 只是 1.编辑 $ORACLE_HOME /Apache/Apache/conf/httpd.conf 更改“超时”大于您的报告运行时间 2.重启http服务器并测试。

opmnctl restartproc ias-component=HTTP_Server

【讨论】:

    【解决方案2】:

    Oracle Reports 需要一段时间来生成大型报告,因此有时可能会发生超时。在发起请求之前尝试使用utl_http.set_ransfer_timeout procedure 增加超时时间,看看是否有帮助。

    【讨论】:

    • 嗨@ThinkJet,谢谢您的回答。我确实在发起请求之前设置了 utl_http.set_ransfer_timeout(1000)。现在我安装了 SRW 包,并使用 SRW.run_report 来执行此操作,仍然出现异常“ORA-29259:输入结束”,它处理了 10 个报告有一次,9 个都正常,只有一个数据最多的失败。实际上,我发现在返回异常后几分钟就成功生成了报告……你对此有什么想法吗?非常感谢..
    • @LuLiu 您能否更清楚地解释您收到此错误的具体时刻(例如,使用 SRW 包用新代码更新您的问题并标记产生 ORA-29259 的函数调用)?您是否使用SRW.REPORT_STATUS 检查报告生成是否已完成?任何具体信息都有助于回答您的问题。
    猜你喜欢
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2017-10-18
    • 1970-01-01
    相关资源
    最近更新 更多