2012-04-23 19 views
5

Mam kilka testów jednostkowych, które rozmawiają z Oracle-11g XE. Uruchamianie każdy test indywidualnie działa dobrze, ale kiedy uruchomić je wszystkie, pierwszych kilka przepustkę, a reszta nie z tego błędu podczas próby utworzenia połączenia DB:Niepowodzenie połączenia JDBC z ORA-12516

ORA-12516, TNS:listener could not find available handler with matching protocol stack 

Dzieje się tak bez względu na to jakiej kolejności mam uruchomić testy, więc problem polega na tym, że używam jakiegoś zasobu na serwerze DB.

Próbowałem uruchomione testy powoli i sprawdzanie # połączeń stosowanych podczas biegu z:

select count(*) from v$session; 

the # sesji zawsze oscyluje między 26 i 28, a limit jest ustawiony na 49, więc nie jestem pewien, na czym polega problem.

Problem jest coraz gorszy, jeśli szybko wykonam testy. Gdy uruchomię je bez żadnych dodatkowych opóźnień, 90% nie powiedzie się z tym błędem. Położyłem sen w tearDown(), aby uzyskać lepszy obraz tego, co się dzieje, aw takim przypadku tylko około 10% nie.

Odpowiedz

0

Spójrz na sesjach i ograniczeń procesowych w V $ parametrów, a także alert.log i listener.log Odpowiedź jest gdzieś tam

3

Prawdopodobnie trzeba zwiększyć wartość parametru procesów. Wykonaj również polecenie "lsnrctl servcies", aby sprawdzić, czy usługa jest wyświetlana jako zablokowana. Przypominam sobie podobny problem, w którym słuchacz jest inteligentny i zlicza liczbę połączeń żądanych dla usługi. Słuchacz nie dowiaduje się o rozłączeniach, dopóki nie powiadomi go PMON. Może to być 5 lub 10 minut później. Tak więc słuchacz myśli, że masz wiele otwartych połączeń i decyduje się być proaktywny i nie rozdawać już żadnych połączeń - dopóki nie zostanie inaczej powiedziane przez PMON. Jeśli zwiększysz parametr PROCESY, możesz być w stanie pokonać liczbę połączeń, które możesz wykonać w tym oknie.

UPDATE: Ten link to opisuje: https://forums.oracle.com/forums/thread.jspa?threadID=360226

Powiązane problemy