Ditt flertrådiga program öppnar för många anslutningar/sessioner. Därför tappar lyssnaren och blockerar nya anslutningar ett tag.
Kontrollera din DB-resursanvändning först:
SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');
Kontrollera om din MAX_UTILIZATION för antingen dina processer eller sessioner närmar sig LIMIT_VALUE. Om ja, bör du antingen:
- Använd DB Connection pooling för att dela
Connection
föremål mellan trådar. Eller, - Öka antalet processer/sessioner som Oracle kan betjäna samtidigt.
Egentligen bör Connection Pooling (#1) alltid göras. En applikation kan inte skalas upp annars. Kolla Apache Commons DBCP för detaljer. För #2, öppna en ny SQL*Plus-session som SYSTEM och kör:
ALTER system SET processes=<n-as-per-number-of-threads> scope=spfile;
för att öka samtidigheten i backend. Starta sedan om databasen. VIKTIGT!