Hola a todos. En esta ocasión, vamos a hablaros de un error que nos ha aparecido en RMAN. El error ORA-12154 nos ha aparecido duplicando una base de datos. Pero ¿por qué ocurre?,¿cómo solucionarlo?
En este caso estamos lanzando un active duplicate con rman
rman target sys/pass@pri auxiliary sys/pass@aux
En ambos nodos hemos probado las entradas pri y aux, funcionando correctamente, pero a la hora de lanzar el duplicate obtenemos un error ORA-12154.

¿Por qué se produce el error ORA-12154?
En ocasiones RMAN falla cuando estamos duplicando una base de datos en un RAC y nos da el siguiente error:
ORA-12154: TNS:could not resolve the connect identifier specified RMAN-03002: failure of Duplicate Db command at 05/06/2023 11:11:48 RMAN-05501: aborting duplication of target database RMAN-03015: error occurred in stored script Memory Script RMAN-03009: failure of backup command on t0 channel at 05/06/2023 11:11:48 ORA-17629: Cannot connect to the remote database server ORA-17627: ORA-12154: TNS:could not resolve the connect identifier specified ORA-17629: Cannot connect to the remote database server
El error ORA-12154 se produce cuando Oracle no encuentra un alias en el fichero TNSNAMES.ORA.

Como os indicamos en esta entrada, en el fichero tnsnames.ora, se establecen las conexiones de Oracle para poder acceder a los servidores.
Tras revisar la configuración, vemos que nuestros TNSNAMES están correctos en el servidor de origen (source) y en el servidor de destino (target). Recuerda que debes haber añadido a la cadena de conexión del TNSNAMES: (UR=A). ¿Entonces que está pasando?
¿Cómo solucionar el error ORA-12154?
Al realizar la conexión entre la primary y la standby, hay ocasiones en las que Oracle utiliza un fichero tnsnames.ora que no es el correcto. Para poder solucionar el error ORA-12154 tenemos dos opciones:
Copiando el TNSNAMES en el ORACLE_HOME de GRID
Este error podemos solucionarlo copiando las entrasdas pri y aux en el TNSNAMES en el HOME del GRID ($ORACLE_HOME/network/admin), de esta manera RMAN ya reconocerá origen y destino y comenzará con la duplicación de la base de datos.
Usando la cadena de conexión completa
Otra posible solución para este error es lanzar la conexión a RMAN usando la cadena de conexión completa del alias del TNSNAMES:
RMAN> connect auxiliary_db sys/<password>@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<service name>)(UR=A)))
Con esta solución, ya se están dando todos los datos para realizar el duplicate, por lo que no es necesario utilizar el tnsnames.ora y evitamos el error.
¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.
Sígue a GPS en LinkedIn