5

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% しか失敗しませんでした。

4

3 に答える 3

3

おそらく、PROCESSES パラメータの値を増やす必要があります。また、「lsnrctl servcies」コマンドを実行して、サービスがブロックされているかどうかを確認します。リスナーがスマートで、サービスに要求されている接続の数を数えている同様の問題を思い出します。PMON が通知するまで、リスナーは切断について学習しません。そして、それは5分または10分後になる可能性があります。そのため、リスナーは、開いている接続がたくさんあると考え、PMON から別の指示があるまで、積極的に接続を渡さないことにします。PROCESSES パラメーターを増やすと、ウィンドウ内で作成する可能性のある接続の数を増やすことができる場合があります。

更新: このリンクはそれを説明しています: https://forums.oracle.com/forums/thread.jspa?threadID=360226

于 2012-04-23T21:15:50.873 に答える
0

何年か後...

参照: http://www.eddgrant.com/blog/2010/01/20/increasing-the-number-of-processes-in-oracle-xe.html

これをSql Plusで実行すると、問題が解決しました:

SQL> alter system set sessions=300 scope=spfile; 
SQL> alter system set processes=300 scope=spfile;
于 2016-03-20T19:15:05.340 に答える
0

v$parameters と、alert.log および listener.log のセッションとプロセスの制限を確認してください。答えはどこかにあります。

于 2012-04-23T20:43:18.330 に答える