Al fin luego de tanto luchar hemos dado con la respuesta de esta preocupación que ciertos de nuestros lectores de este sitio han tenido. Si deseas compartir alguna información no dejes de dejar tu conocimiento.
Solución:
Lamentablemente, no se admite la creación de sinónimos para dblinks.. Si lee la documentación sobre sinónimos, encontrará que los objetos permitidos para sinónimos son solo:
Utilice la declaración CREATE SYNONYM para crear un sinónimo, que es un nombre alternativo para un tabla, vista, secuencia, procedimiento, función almacenada, paquete, vista materializada, objeto de esquema de clase Java, tipo de objeto definido por el usuario u otro sinónimo.
La razón por la que falla su segunda consulta es que el sinónimo que ha creado no funciona correctamente. No se valida correctamente en el momento de la creación y puede crear cualquier tipo de sinónimo incorrecto como ese. Para verificar, simplemente pruebe la siguiente declaración:
create synonym dblink3 for no_object_with_this_name;
Seguirás recibiendo una respuesta como esta:
*Synonym DBLINK3 created.*
Pero, por supuesto, nada funcionará a través de este sinónimo.
No veo el punto de crear un sinónimo para el dblink en sí. Lo ideal es que crees el sinónimo Para el mesa remota utilizando el parpadeo.
CREATE DATABASE LINK my_db_link CONNECT TO user IDENTIFIED BY passwd USING 'alias';
CREATE SYNONYM my_table FOR [email protected]_db_link;
Ahora, podrías consultar el mesa remota utilizando el sinónimo:
SELECT * FROM my_table;
Estoy tratando de pensar en el problema comercial que se resuelve al colocar un sinónimo en un db_link, y lo único que se me ocurre es que necesita implementar un código constante que seleccionará [email protected]_dblink, y aunque los nombres de las tablas son constantes, diferentes usuarios pueden estar buscando en diferentes db_links. O simplemente desea poder intercambiar en qué db_link está operando con un simple repunto de sinónimo.
Aquí está el problema: no se puede hacer de esa manera. Los sinónimos de db_link no están permitidos.
Su única solución es hacer que el código haga referencia a las tablas por sinónimos y establezca sinónimos privados para que apunten al db_link correcto. De esa manera, su código continúa “Seleccionar de REMOTE_TABLE1” y solo puede cambiar de qué DB_LINK está obteniendo esa tabla remota.
¿Es molesto tener que configurar/restablecer más de 100 sinónimos privados? Sí. Pero si es algo que necesita hacer con frecuencia, entonces agrupe un procedimiento para que lo haga por usted donde pasa el nombre de db_link y recorre y restablece los sinónimos por usted.
Te mostramos comentarios y calificaciones
Recuerda que puedes comunicar esta sección si te valió la pena.