Ir al contenido principal

Uso del DBLINK para acceder a una BD remota o a una BD distribuida

La manera más sencilla de acceder desde una base de datos Oracle a tablas y vistas (views) de otra base de datos Oracle es mediante el uso de un DBLink (enlace a base de datos). No obstante, en muchos casos puede no ser recomendable la utilización de DBLinks, ya que el acceso a tablas y vistas remotas puede provocar importantes problemas de rendimiento en ambas bases de datos, tanto la remota como la local. En la mayoría de los casos estos problemas de rendimiento se deben a la imposibilidad de utilizar los índices de las tablas remotas.



Los DBLinks se crean en la base de datos local utilizando el comando PL/SQL o SQL CREATE DATABASE LINK. Obviamente, el usuario que ejecute dicho comando debe tener los permisos necesarios para poder hacerlo. La sintaxis del comando SQL mencionado es como sigue:



CREATE [PUBLIC] DATABASE LINK Nombre_dblink CONNECT TO Nombre_usuario INDENTIFIED BY Contraseña USING 'Cadena_conexion';



En donde:


Nombre_dblink es el nombre del DBLink.

Nombre_usuario y Contraseña son los identificadores que utilizará el DBLink para conectarse a la base de datos remota. Por lo tanto, el acceso a las tablas y vistas de la base de datos remota se hará con los permisos que dicho usuario tenga sobre ellas en dicha base de datos. Si se omiten estos valores, entonces el acceso a la base de datos remota se hará con el mismo nombre de usuario y contraseña con el que el usuario en cuestión esté conectado a la base de datos local.



Cadena_conexion identifica a la base de datos remota. Puede ser el nombre de la instancia, si ésta está definida en el archivo tnsnames.ora de la base de datos origen, o también, para la versión 8 de la base de datos Oracle o posteriores, podemos utilizar directamente la definición TNS (esto posibilita que no tengamos que modificar el fichero tnsnames.ora).



Por otro lado, si definimos el DBLink como PUBLIC, todos los usuarios tendrán acceso al mismo.



A continuación les pongo algunos ejemplos del comando CREATE DATABASE LINK:



CREATE DATABASE LINK dbl_bd001 CONNECT TO repadmin IDENTIFIED BY reppass1 USING 'bd001';

CREATE PUBLIC DATABASE LINK dbl_bd001 CONNECT TO repadmin IDENTIFIED BY reppass1 USING '(description = (address = (protocol = tcp) (host = bd.miempresa.com) (Port = 1521) ) (connect_data = (sid = bd001) ) )';



Una vez creado el DBLink, para referenciar una tabla o vista de la base de datos remota se ha de indicar el nombre de la tabla o vista, concatenado con el carácter "@" y el nombre que se le ha dado al DBLink. Las tablas y vistas remotas podrán usarse en consultas (sentencias SELECT) y, si la base de datos Oracle utiliza el sistema de bases de datos distribuidas, entonces se podrán ejecutar también sentencias SQL o PLSQL del tipo DELETE, INSERT, UPDATE o LOCK TABLE. Asimismo, se pueden crear sinónimos para abreviar la forma de referenciar a las tablas y vistas remotas. A continuación les pongo algunos ejemplos de sentencias:


INSERT INTO Nombre_tabla_remota@Nombre_dblink (campo1) VALUES ('prueba');


UPDATE Nombre_tabla_remota@Nombre_dblink; SET campo1 = 'actualizado' WHERE campo1 = 'prueba';


CREATE SYNONYM tremota FOR
 Nombre_tabla_remota@Nombre_dblink;SELECT * FROM tremota;


Nota: Existe otro concepto que no he explicado aquí y es el de los DBLinks compartidos (comando CREATE SHARED DATABASE LINK), el que necesite más información sobre este concepto puede hechar un ojo en el manual de Oracle sobre sistemas de base de datos distribuids (Oracle Distributed Database Systems). Por otro lado, también es posible acceder mediante DBLink a bases de datos remotas que no sean Oracle. Para crear un DBLink de este tipo, y antes de que nadie me pregunte, puedes realizar una búsqueda en Internet de las palabras: "Oracle Heterogeneous Services".
bueno espero que les haya sido util la informacion.

Comentarios

Entradas populares de este blog

Configurar el Mercury/32 del Xampp para enviar correos externos Con los siguientes pasos podrás configurar tu Mercury/32 que viene con xampp para enviar emails a correos externos desde tu servidor. Iniciamos el Mercury/32 desde el panel del xampp y damos al botón Admin. Se iniciará el panel de control del Mercury/32. Vamos a Configuration/Protocol Modules y desactivamos “MercuryB HTTP web server” y “Mercury IMAP4rev1 server”. Para mandar emails a correos externos desactivamos “MercuryE SMTP end-to-end delivery client” y en cambio activamos “MercuryC SMTP relaying client”. Damos al Ok y reiniciamos el Mercury. Volvemos a la consola del Mercury y vamos a Configuration/Mercury core module y en nos ponemos en la pestaña General. En “internet name for this system” ponemos el dominio que tenemos en nuestro servidor, ya sea localhost, yo como lo oriento a la instalación del wordpress MU con buddyPress necesito poner el dominio que elegí: localhost.wordpress, pero en ge...

Prueba de video pitagoras game