正確には、何が問題なのですか?
通常、中間層のアプリケーションサーバーは接続プールを作成します。コードが接続を要求すると、データベースへの新しい接続を生成するオーバーヘッドを通過するのではなく、プールからすでに開いている接続を取得します。コードが接続を閉じると、接続は物理的に接続を閉じるオーバーヘッドを通過するのではなく、プールに戻されます。これは、STATUS
が存在するデータベースへの接続が適切な数になることを意味します。 V$SESSION
で 任意の時点で「非アクティブ」です。それは完全に正常です。
負荷がかかっている場合でも、中間層からのほとんどのデータベース接続はほとんどの場合「非アクティブ」です。 「INACTIVE」のステータスは、クエリを実行した瞬間に、セッションがSQLステートメントを実行していなかったことを意味します。ほとんどの接続は、接続プールに座ってJavaセッションが開くのを待つか、Javaセッションがデータを処理するのを待つか、ネットワークがマシン間でデータを転送するのを待つことにほとんどの時間を費やします。
実際にエラーが発生していますか(つまり、ORA-00020:プロセスの最大数を超えています)?または、V$SESSION
のエントリ数に混乱しているだけですか。 ?