Votre application multithread ouvre trop de connexions/sessions. Par conséquent, l'écouteur abandonne et bloque les nouvelles connexions pendant un certain temps.
Vérifiez d'abord l'utilisation de vos ressources de base de données :
SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');
Vérifiez si votre MAX_UTILIZATION pour vos processus ou vos sessions se rapproche trop de la LIMIT_VALUE. Si oui, vous devez soit :
- Utiliser le regroupement de connexions DB pour partager
Connection
objets entre les threads. Ou, - Augmentez le nombre de processus/sessions qu'Oracle peut traiter simultanément.
En fait, Connection Pooling (#1) devrait toujours être fait. Une application ne peut pas évoluer autrement. Vérifiez DBCP Apache Commons pour plus de détails. Pour #2, ouvrez une nouvelle session SQL*Plus en tant que SYSTEM et exécutez :
ALTER system SET processes=<n-as-per-number-of-threads> scope=spfile;
pour augmenter la simultanéité du backend. Redémarrez ensuite la base de données. IMPORTANT !