Oracle-11g XE と通信する単体テストがいくつかあります。各テストを個別に実行すると問題なく動作しますが、すべてを実行すると、最初のいくつかはパスし、残りは DB 接続を作成しようとすると次のエラーで失敗します。
ORA-12516, TNS:listener could not find available handler with matching protocol stack
これは、テストを実行する順序に関係なく発生するため、DB サーバーで何らかのリソースを使い果たしていることが問題のようです。
テストをゆっくり実行して、実行中に使用中の接続数を次のようにチェックしてみました。
select count(*) from v$session;
セッション数は常に 26 から 28 の間で変動し、制限は 49 に設定されているため、何が問題なのかわかりません。
テストをすばやく実行すると、問題も悪化します。追加の遅延なしでそれらを実行すると、90% がこのエラーで失敗します。何が起こっているのかをよりよく理解するために、tearDown() にスリープを入れましたが、その場合、約 10% しか失敗しませんでした。