jueves, 13 de julio de 2023

ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado

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

Oracle shutdown immediate

2.- En el otro command prompt prender el listener con el comando: lsnrctl start

oracle listener lsnrctl start

*Si es necesario se puede usar también el comando: lsnrctl stop

3.- En el command prompt de la base de datos, iniciar la base de datos con el comando: startup

oracle startup command

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

lsnrctl status command

Con este orden de reinicio pude corregir el error inicial que tenía.

Espero les sirva.


No hay comentarios.:

Publicar un comentario