We hebben een lokaal draaiende applicatie waar we de volgende fout ervaren:
ORA-12514: TNS:listener weet momenteel niet van gevraagde service in connect descriptor
Ik'heb de verbinding getest met TNSPing
die correct oploste en
Ik heb SQLPlus
geprobeerd om verbinding te maken, wat mislukte met dezelfde fout als hierboven. Ik gebruikte deze syntaxis voor SQLPlus
:
sqlplus username/password@addressname[or host name]
Dat hebben we geverifieerd:
We weten niet of er veranderingen zijn aangebracht in deze omgeving. Kunnen we nog iets anders testen?
Ik had dit probleem en de oplossing was om ervoor te zorgen dat in tnsnames.ora
de SERVICE_NAME
een geldige service naam is in je database. Om geldige service namen te achterhalen, kunt u de volgende query in Oracle gebruiken:
select value from v$parameter where name='service_names'
Zodra ik tnsnames.ora
heb bijgewerkt naar:
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *<validhost>*)(PORT = *<validport>*))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *<servicenamefromDB>*)
)
)
dan rende ik:
sqlplus user@TEST
Succes! De listener vertelt je in feite dat welke service_naam je ook gebruikt, het volgens de DB geen geldige service is.
(Ik was sqlplus aan het draaien vanaf Win7 client werkstation naar remote DB en geef de DBA's de schuld ;) )
Deze fout kan optreden als een applicatie voor iedere database-interactie een nieuwe verbinding maakt of als de verbindingen niet goed worden gesloten. Een van de gratis gereedschappen om dit te monitoren en te bevestigen is Oracle Sql developer (hoewel dit niet het enige gereedschap is dat je kunt gebruiken om DB sessies te monitoren).
je kunt de tool downloaden van oracle site Sql Developer
Hier is een screenshot van hoe je sessies kunt monitoren. (als je veel sessies ziet ophopen voor je applicatie gebruiker gedurende de tijd dat je de ORA-12514 fout ziet, dan is het een goede indicatie dat je misschien een connectie pool probleem hebt).