Oracle
 sql >> Database >  >> RDS >> Oracle

java.sql.SQLException:Listener ha rifiutato la connessione con il seguente errore:ORA-12519, TNS:nessun gestore di servizio appropriato trovato

La tua applicazione multi-thread apre troppe connessioni/sessioni. Quindi, l'ascoltatore interrompe e blocca le nuove connessioni per un po'.

Controlla prima l'utilizzo delle risorse del database:

SELECT * FROM v$resource_limit WHERE resource_name IN ('processes','sessions');

Verifica se MAX_UTILIZATION per i tuoi processi o sessioni si sta avvicinando troppo al LIMIT_VALUE. Se sì, dovresti:

  1. Utilizza il pool di connessioni DB per condividere Connection oggetti tra i thread. Oppure,
  2. Aumenta il numero di processi/sessioni che Oracle può servire contemporaneamente.

In realtà, Connection Pooling (n. 1) dovrebbe essere sempre eseguito. Un'applicazione non può aumentare la scalabilità altrimenti. Controlla Apache Commons DBCP per dettagli. Per #2, apri una nuova sessione SQL*Plus come SYSTEM ed esegui:

ALTER system SET processes=<n-as-per-number-of-threads> scope=spfile;

per aumentare la concorrenza di back-end. Quindi RIAVVIA il database. IMPORTANTE!