マルチスレッドアプリケーションが開いている接続/セッションが多すぎます。したがって、リスナーはしばらくの間、新しい接続をドロップしてブロックしています。
最初にDBリソースの使用状況を確認してください:
SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');
プロセスまたはセッションのMAX_UTILIZATIONがLIMIT_VALUEに近づきすぎていないかどうかを確認してください。はいの場合は、次のいずれかを行う必要があります。
- DB接続プールを使用して
Connection
を共有します スレッド間のオブジェクト。または、 - Oracleが同時に処理できるプロセス/セッションの数を増やします。
実際には、接続プール(#1)は常に実行する必要があります。それ以外の場合、アプリケーションをスケールアップすることはできません。 Apache CommonsDBCP を確認してください 詳細については。 #2の場合、新しいSQL * PlusセッションをSYSTEMとして開き、以下を実行します。
ALTER system SET processes=<n-as-per-number-of-threads> scope=spfile;
バックエンドの同時実行性を高めるため。次に、データベースを再起動します。重要!