Tenemos una aplicación que se ejecuta localmente en la que experimentamos el siguiente error:
ORA-12514: TNS:listener no conoce actualmente el servicio solicitado
en el descriptor de conexión
He probado la conexión utilizando TNSPing
que se resolvió correctamente y
He probado con SQLPlus
para intentar conectarme, que ha fallado con el mismo error que el anterior. He utilizado esta sintaxis para SQLPlus
:
sqlplus username/password@addressname[or host name]
Hemos verificado que:
No sabemos de ningún cambio que se haya realizado en este entorno. ¿Hay algo más que podamos probar?
Tuve este problema y la solución fue asegurarse de que en tnsnames.ora
el SERVICE_NAME
es un nombre de servicio válido en su base de datos. Para averiguar los nombres de servicio válidos, puede utilizar la siguiente consulta en oracle:
select value from v$parameter where name='service_names'
Una vez actualizado tnsnames.ora
a:
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *<validhost>*)(PORT = *<validport>*))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = *<servicenamefromDB>*)
)
)
entonces ejecuté:
sqlplus user@TEST
¡Éxito! El listener te está diciendo básicamente que el nombre del servicio que estás usando no es un servicio válido según la base de datos.
(Estaba ejecutando sqlplus desde la estación de trabajo del cliente Win7 a la DB remota y culpando a los DBAs ;) )
Este error puede ocurrir cuando una aplicación hace una nueva conexión para cada interacción con la base de datos o las conexiones no se cierran correctamente. Una de las herramientas gratuitas para monitorizar y confirmar esto es Oracle Sql developer (aunque no es la única herramienta que se puede utilizar para monitorizar las sesiones de la BD).
puedes descargar la herramienta desde el sitio de oracle Sql Developer
aquí hay una captura de pantalla de cómo monitorear sus sesiones. (si ves que se acumulan muchas sesiones para el usuario de tu aplicación cuando ves el error ORA-12514 entonces es un buen indicio de que puedes tener un problema de pool de conexiones).