ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado
Hola.
Estoy teniendo el siguiente error al intentar importar un backup de base de datos de Oracle 19c con el comando impdp justo después la creación de una nueva base de datos.
C:\WINDOWS\system32>impdp system/pwd@myhost:1521/MYINSTANCE FULL=y DUMPFILE=FILEEXPDAT.DMP LOGFILE=full_log_import.log
Import: Release 19.0.0.0.0 - Production on MiÚ Jul 12 19:58:41 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
UDI-12154: la operación ha generado un error ORACLE 12154
ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado
El error es un tanto genérico porque no ofrece mucha información y las causas pueden ser diversas.
En mi caso particular es importante mencionar que la base de datos está recién creada y este comportamiento ya lo he experimentado con una base de datos nueva.
Solución
- Verificar que existe el archivo tnsnames.ora en la siguiente ubicación: $ORACLE_HOME/network/admin/tnsnames.ora
Si no existe el archivo, crearlo manualmente y generar una entrada con la descripción del servicio en el siguiente formato:
MYSERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-1KG2CLC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYSERVICE)
)
)- En la misma ubicación, verificar que el archivo sqlnet.ora contenga TNSNAMES en el parámetro NAMES.DIRECTORY_PATH
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
- En este punto verificar si la aplicación ya reconoce el servicio y puede conectarse.
Se puede verificar que el servicio responde usando la utilidad
tnsping
$ORACLE_HOME\bin>tnsping MYSERVICE
- En este y otros casos es importante que el listener esté prendido cuando se inicia la base de datos para que reconozca la instancia de Oracle.
Lo primero que hay que revisar es que el listener esté activo y que tenga comunicación con la instancia/servicio de Oracle. Para esto ejecutar la siguiente instrucción en un command prompt:
C:\WINDOWS\system32>lsnrctl status
LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 12-JUL-2023 19:57:24
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Conectßndose a (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no hay ningún listener
TNS-12560: TNS:error del adaptador de protocolo
TNS-00511: No hay ningún listener
64-bit Windows Error: 61: Unknown error
Como se ve en este caso, el estatus del listener está apagado por lo que hay que prenderlo pero debe ser en el siguiente orden que incluye reiniciar la base de datos.
1.- En otro command prompt conectarse a la base de datos y apagarla con el comando: shutdown immediate
2.- En el otro command prompt prender el listener con el comando: lsnrctl start
*Si es necesario se puede usar también el comando:
lsnrctl stop3.- En el command prompt de la base de datos, iniciar la base de datos con el comando: startup
Al iniciarse la base de datos, el listener la va a reconocer y reportar como un servicio disponible.
4.- Por último, verificar el estatus del listener con el comando: lsnrctl status
Con este orden de reinicio pude corregir el error inicial que tenía.
Espero les sirva.