用于生成/通过电子邮件发送Oracle报告输出的数据库作业
任务是每天自动生成Oracle报告,并通过电子邮件发送给用户 因此,我已经在某种程度上实现了这一点(如果我硬编码下面的一个报表服务器名称,它就会起作用) 我在将生成报告的数据库上创建了一个作业。我可以通过以下命令将报告以PDF格式发送到目标:用于生成/通过电子邮件发送Oracle报告输出的数据库作业,oracle,email,pdf,report,environment-variables,Oracle,Email,Pdf,Report,Environment Variables,任务是每天自动生成Oracle报告,并通过电子邮件发送给用户 因此,我已经在某种程度上实现了这一点(如果我硬编码下面的一个报表服务器名称,它就会起作用) 我在将生成报告的数据库上创建了一个作业。我可以通过以下命令将报告以PDF格式发送到目标: UTL_HTTP.REQUEST('http://server/reports/rwservlet?server=specific_report_server &report='||p_report_name||'&userid='||p_
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“
piece将指示报表在适当的服务器上运行,作业的第一部分可以从运行报表的配置文件中获取报表服务器名称。我不确定是否可以从数据库级别执行此操作,或者如何执行此操作。有什么想法吗
有没有更好的方法可以做到这一点呢?如果有两台负载平衡的服务器,这就意味着网络人员必须为服务配置某种虚拟IP(VIP)。您(和其他所有人)应该使用该VIP,而不是特定的服务器名称
例如,如果您有两台服务器
reportA.yourdomain.com
和reportB.yourdomain.com
,您几乎肯定会为reports.yourdomain.com
创建一个VIP,以平衡两台服务器之间的负载(并知道其中一台服务器是否停机或是否添加了新的reportC
服务器)。这个VIP要么自己进行负载平衡,要么指向分配流量的实际物理负载平衡器。所有应用程序都会引用reports.yourdomain.com
VIP,而不是任何硬编码的服务器名称。这是我第一次向服务器团队提出问题时与他们讨论的问题(因为我所在的另一个组织就是这样做的)。他们能够帮助我处理”http://server“
上面链接的一部分,提供用于该作品的VIP名称。。。但是,URL中的第一个参数是指定报表服务器进程名称(例如“?server=rep\u batch\u somereportserver”),这就是我挂断的地方。我原以为他们也可以为此做一些事情,类似于您对URL的域部分所建议的。@unrehowtotototothis-设计一个服务,要求您点击VIP,然后将特定的服务器名称作为参数传递,这似乎很疯狂。这违背了负载平衡的全部目的。我也很难相信,当一台服务器宕机时,有人首先必须去更新每台服务器上的配置文件和“默认环境”(不知道这指的是什么)并等待所有缓存数据被清除,然后关闭服务器,直到服务器重新启动时才撤销这些修改。我会把这个反馈给我的服务器团队,看看他们是否能想出更好的解决方案。我觉得我在试图解决一个他们应该找到解决方案的问题。无论如何,谢谢你的快速帮助!