Seu aplicativo multithread está abrindo muitas conexões/sessões. Portanto, o ouvinte está descartando e bloqueando novas conexões por um tempo.
Verifique seu uso de recursos de banco de dados primeiro:
SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');
Verifique se sua MAX_UTILIZATION para seus Processos ou Sessões está chegando muito perto de LIMIT_VALUE. Se sim, você deve:
- Use o pool de conexões de banco de dados para compartilhar
Connection
objetos entre threads. Ou, - Aumente o número de processos/sessões que a Oracle pode atender simultaneamente.
Na verdade, o Pool de Conexões (#1) deve sempre ser feito. Um aplicativo não pode ser dimensionado de outra forma. Verifique Apache Commons DBCP para detalhes. Para #2, abra uma nova sessão SQL*Plus como SYSTEM e execute:
ALTER system SET processes=<n-as-per-number-of-threads> scope=spfile;
para aumentar a simultaneidade de back-end. Em seguida, REINICIE o banco de dados. IMPORTANTE!