0

タスクは、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&paramform=no&DESformat=pdf&ENVID='||p_envid);

それはうまくいきます...

ただし問題は、私の組織には、負荷分散された 2 つのレポート サーバーがあることです。私たちのサーバー チームは、実際には何の警告もなしにサーバーの 1 つを停止することができました。そのサーバーがダウンすると、機能しなくなります。

サーバー チームから、formsweb.cfg ファイルまたはジョブ内の default.env 値 (サーバー名を保持するパラメーターが含まれています) からサーバーを取得する方法を探すように依頼されました。"http://server"ピースがレポートを適切なサーバーで実行するように指示し、ジョブの最初の部分で、レポートが実行される構成ファイルからレポート サーバー名を取得できるという考えがあります。これがデータベースレベルから可能かどうか、またはこれを行う方法がわかりません。何か案は?

おそらくこれを行うためのより良い方法はありますか?

4

1 に答える 1

1

負荷分散されたサーバーが 2 つある場合は、ネットワーク担当者がサービス用に何らかの仮想 IP (VIP) を構成している必要があることを強く意味します。あなた (および他の全員) は、特定のサーバー名ではなく、その VIP を使用する必要があります。

たとえば、2 つのサーバーreportA.yourdomain.comreportB.yourdomain.comがある場合、ほぼ確実reports.yourdomain.comに、2 つのサーバー間で負荷を分散するための VIP を作成します (また、サーバーの 1 つがダウンしているかどうか、または新しいreportCサーバーが追加されているかどうかを認識します)。この VIP は、それ自体で負荷分散を行うか、トラフィックを分散する実際の物理的な負荷分散装置を指します。すべてのアプリケーションはreports.yourdomain.com、ハードコーディングされたサーバー名ではなく、VIP を参照します。

于 2013-09-20T16:29:06.373 に答える