Esta mañana creé un "DBLINK" en la Base de Datos, como tantas otras veces, pero no funcionaba, cada vez que se intentaba ejecutar una Select daba el siguiente error:
SQL> select * from USER.QQ@DBLTEST;
ORA-12514: TNS:listener does not currently know of service requested in connect
Como he dado muchas vueltas por google intentando averiguar la causa y no he encontrado nada al respecto, creo esta entrada por si a alguien le ocurre lo mismo.
El DBLink se creó como:
SQL > create public database link DBLTEST connect to jp identified by jp23 USING 'BDjp';
Exactamente igual que otros muchos "DBlinks" ya existentes.
En el "tnsnames.ora" se configuró la cadena de conexión:
BDjp =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.1.10)
(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = BDjp)))
Igual que otros servicios que también están en el fichero "tnsnames.ora" y tienen asociados DBLINKS. Al hacer "tnsping" obtenía respuesta sin problemas:
bash-3.00$ tnsping BDjp
TNS Ping Utility for Solaris: Version 11.2.0.1.0 - Production on 08-APR-2014 13:19:51
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Used parameter files:
/u01/app/oracle/product/11.2.0/APRIL/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.107.49.217)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = GRH41DAE1)))
OK (10 msec)
A pesar de todo esto seguía sin funcionar.
Solución:
Cambiar la cadena de conexión indicada en el "tnsnames.ora", en lugar de "service_name" había que indicar "SID = GRH41DAE1". Quedando así:
BDjp =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.1.10)
(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = BDjp)))Un pequeño detalle que pasó inadvertido por "copy-paste" de otras cadenas en el tnsnames.ora y porque funcionaba el comando tnsping, pero no el acceso a través de "DBlink".
Más información a este respecto:
http://docs.oracle.com/cd/B28359_01/network.111/b28317/tnsnames.htm#NETRF279
En la sección de "Connect Data"
Conclusión:
Cuidado con el "copy-paste" y cuidado con lo que parece funcionar "de primeras".
Sistema en el que se creó el DBLink:
Base de Datos: Oracle RAC 11gR1.0.7
Sistema Operativo: Solaris 10 Server
Máquinas: Oracle (antes SUN) M5000
No hay comentarios:
Publicar un comentario