0

WASで実行されているEARアプリがあり、Oracleデータベースに接続してストアドプロシージャを実行しています。

現在、ストアドプロシージャの実行には長い時間がかかります。したがって、WASとOracleサーバー間のファイアウォールは30分後に閉じます。ファイアウォールを開いたままにするOracle構成はありますか?ここでは、タイムアウトを増やすことはできません。

4

1 に答える 1

2

非アクティブなためにファイアウォールが接続を閉じている場合は、サーバーのsqlnet.oraパラメーターsqlnet.expire_time を設定して、N分ごとにクライアントにpingを実行できます。通常、これはデッド接続の検出に使用され、サーバーはクライアントアプリケーションが開いている接続で停止したことを判別できます。ただし、これにより、ファイアウォールが接続が長時間非アクティブであると判断するのを防ぐことができます。一方、ファイアウォールが非アクティブであるかどうかに関係なく30分を超える接続を単に許可しない場合、この設定は影響を与えません。

アーキテクチャ上、アプリケーションで30分のストアドプロシージャ呼び出しを本当に実行したいですか?アプリケーションが、ストアドプロシージャを非同期で実行するジョブを送信する呼び出しを行う方が適切と思われます。次に、Webアプリケーションは定期的にデータベースをポーリングして、ユーザーに何らかの進行状況バーを表示する場合に、ジョブがまだ実行されているかどうかを確認できます。

于 2012-11-08T22:25:47.587 に答える