任务是每天自动生成 Oracle 报告并通过电子邮件发送给用户。
所以我已经完成了这项工作(如果我硬编码下面的报告服务器名称之一,它就可以工作)。
我在将生成报告的数据库上创建了一个作业。我可以使用以下命令将报告以 PDF 格式通过电子邮件发送到目的地:
UTL_HTTP.REQUEST('http://server/reports/rwservlet?server=specific_report_server &report='||p_report_name||'&userid='||p_connstring||'&destype=mail'||p_parameters||'&desname='||p_to_recipientlist||' &cc='||p_cc_recipientlist||'&bcc='||p_bcc_recipientlist||'&subject=%22' || REPLACE(p_subject,' ','%20') || '%22¶mform=no&DESformat=pdf&ENVID='||p_envid);
这很好用...
然而,问题是我的组织有两个负载平衡的报表服务器。我们的服务器团队可以在没有任何警告的情况下关闭其中一台服务器,所以我不能只用其中一个报表服务器名称硬编码报表服务器名称(上面的 ?server= 参数),因为它会工作一段时间,然后当该服务器出现故障时,它将停止工作。
我的服务器团队要求我寻找一种方法来从 formsweb.cfg 文件或作业中的 default.env 值中提取服务器(那里有保存服务器名称的参数)。这里的想法是,该"http://server"
部分将指导报告在适当的服务器上运行,并且作业的第一部分可以从运行报告的配置文件中获取报告服务器名称。我不确定这是否可以从数据库级别,或者如何做到这一点。有任何想法吗?
也许有更好的方法可以做到这一点?