Abbiamo un'applicazione in esecuzione in locale dove stiamo riscontrando il seguente errore:
ORA-12514: TNS:listener non conosce attualmente il servizio richiesto nel descrittore di connessione
Ho testato la connessione usando TNSPing
che si è risolto correttamente e
Ho provato con SQLPlus
per provare la connessione, che è fallita con lo stesso errore di cui sopra. Ho usato questa sintassi per SQLPlus
:
sqlplus username/password@addressname[or host name]
Abbiamo verificato che:
Non siamo a conoscenza di alcuna modifica apportata a questo ambiente. C'è qualcos'altro che possiamo testare?
Ho avuto questo problema e la soluzione è stata assicurarsi che in tnsnames.ora
il SERVICE_NAME
sia un nome di servizio valido nel vostro database. Per trovare i nomi dei servizi validi, puoi usare la seguente query in oracolo:
select value from v$parameter where name='service_names'
Una volta che ho aggiornato tnsnames.ora
a:
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *<validhost>*)(PORT = *<validport>*))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *<servicenamefromDB>*)
)
)
poi ho eseguito:
sqlplus user@TEST
Successo! L'ascoltatore ti sta praticamente dicendo che qualsiasi nome di servizio tu stia usando non è un servizio valido secondo il DB.
( Stavo eseguendo sqlplus dalla workstation client Win7 al DB remoto e dare la colpa ai DBA ;) )
Questo errore può verificarsi quando un'applicazione crea una nuova connessione per ogni interazione con il database o le connessioni non vengono chiuse correttamente. Uno degli strumenti gratuiti per monitorare e confermare questo è Oracle Sql developer (anche se questo non è l'unico strumento che si può utilizzare per monitorare le sessioni DB).
potete scaricare lo strumento dal sito oracle Sql Developer
qui c'è uno screenshot di come monitorare le sessioni. (se vedete molte sessioni che si accumulano per l'utente dell'applicazione quando vedete l'errore ORA-12514 allora è una buona indicazione che potreste avere un problema di connection pool).