28
Conexión Remota Oracle Universidad de la Amazonia Florencia - Caquetá

Exposicon Oracle

Embed Size (px)

Citation preview

Page 1: Exposicon Oracle

Conexión Remota Oracle

Universidad de la Amazonia Florencia - Caquetá

Page 2: Exposicon Oracle

Contenido

DLINK:• Propósito• Requisitos Previos• Sintaxis• Palabras Claves y

Parámetros• Ejemplos

Page 3: Exposicon Oracle

DBLINK

Propósitos

Un Database Link (DBLink) en Oracle es un tipo de objeto que permite realizar una conexión desde una base de datos a otra. Su principal objetivo es ocultar el detalle de los parámetros de conexión necesarios, facilitándonos un sencillo acceso a los recursos disponibles en otras bases de datos, independientemente de que estas se encuentren instaladas en el mismo servidor o no.

Page 4: Exposicon Oracle

Una vez creado un enlace de base de datos, se puede utilizar para hacer referencia a las tablas y vistas de la base de datos. En las sentencias de SQL, puede hacer referencia a una tabla o vista en la base de datos distinta añadiendo @ dblink a la tabla o nombre de vista. Puede consultar una tabla o vista en la base de datos con el SELECT comunicado. También puede acceder a tablas remotas y vistas usando cualquier INSERT , UPDATE , DELETE , o LOCK TABLA comunicado.

DBLINK

Page 5: Exposicon Oracle

DBLINK

Requisitos Previos

Para crear un enlace de base de datos privada, debe tener el CREATE  DATABASE LINK privilegio del sistema. Para crear un enlace de base de datos pública, debe tener el CREATE PUBLIC DATABASE LINK  privilegio del sistema. 

Además, debe tener el CREATE SESIÓN privilegio del sistema sobre la base de datos remota Oracle.

Red de Oracle debe estar instalado en ambas bases de datos Oracle locales y remotos.

Page 6: Exposicon Oracle

DBLINK

Sintaxis

Page 7: Exposicon Oracle

CREATE [ SHARED ] [ PUBLIC ] DATABASE LINK dblink [ CONNECT TO { CURRENT_USER | user IDENTIFIED BY password [ dblink_authentication ] } | dblink_authentication ] [ USING 'connect_string' ] ;

DBLINK

Page 8: Exposicon Oracle

DBLINK

Page 9: Exposicon Oracle

DBLINK

Palabras claves y Parámetros

COMPARTIDO (SHARED)Especifique COMPARTIDA utilizar una única conexión de red para crear un enlace de base de datos pública que se puede compartir entre varios usuarios.

PÚBLICO (PUBLIC)Especifique PÚBLICA para crear un enlace de base de datos pública disponible para todos los usuarios. Si se omite esta cláusula, el enlace de base de datos es privada y sólo está disponible para usted.

Page 10: Exposicon Oracle

DBLINK

DBLINK

Especificar el nombre completo o parcial de la base de datos de enlace. Si sólo se especifica el nombre de base de datos, base de datos Oracle implícitamente añade el dominio de base de datos de la base de datos local.

Si el valor de la GLOBAL_NAMES parámetro de inicialización es VERDADERO , entonces el enlace de base de datos debe tener el mismo nombre que la base de datos al que se conecta. Si el valor de GLOBAL_NAMES es FALSO , y si se ha cambiado el nombre global de la base de datos, entonces usted puede especificar el nombre global.

Page 11: Exposicon Oracle

DBLINK

Restricción de la Creación de vínculos de base de datos

No se puede crear un enlace de base de datos en el esquema de otro usuario, y no se puede calificar dblink con el nombre de un esquema. Periodos están permitidos en los nombres de los enlaces de la base de datos, por lo que la base de datos Oracle interpreta el nombre completo, tal como ralph.linktosales , como el nombre de un enlace de base de datos en el esquema en lugar de como un enlace de base de datos con nombre linktosales en el esquema ralph .)

Page 12: Exposicon Oracle

CONECTAR A LA CLÁUSULA 

El CONNECT TO cláusula le permite habilitar una conexión a la base de datos remota.

CURRENT_USER Cláusula 

Especifique CURRENT_USER para crear un enlace de usuario de base de datos actual . El usuario actual debe ser un usuario global con una cuenta válida en la base de datos remota

DBLINK

Page 13: Exposicon Oracle

usuario SEÑALADAS POR contraseña 

Especifique el nombre de usuario y contraseña que utiliza para conectarse a la base de datos remota utilizando una conexión de usuario de base de datos fija . Si se omite esta cláusula, el enlace de base de datos utiliza el nombre de usuario y contraseña de cada usuario que se conecta a la base de datos. Esto se conoce como un enlace de base de datos de usuario conectado .

DBLINK

Page 14: Exposicon Oracle

dblink_authentication

Especifique el nombre de usuario y contraseña en la instancia de destino. Esta cláusula autentica al usuario para el servidor remoto y se requiere para la seguridad. El nombre de usuario y la contraseña especificados debe ser un nombre de usuario válido y la contraseña en la instancia remota. El nombre de usuario y la contraseña sólo se utilizan para la autenticación. No hay otras operaciones se llevan a cabo en nombre de este usuario.Debe especificar esta cláusula cuando se utiliza el COMPARTIDA cláusula

DBLINK

Page 15: Exposicon Oracle

El uso de ' cadena de conexión ‘

Especifique el nombre del servicio de base de datos remota. Si sólo se especifica el nombre de base de datos, base de datos Oracle implícitamente añade el dominio de base de datos para la cadena de conexión para crear un nombre de servicio completo. Por lo tanto, si el dominio de base de datos de la base de datos remota es diferente de la de la base de datos actual, entonces se debe especificar el nombre del servicio completo.

DBLINK

Page 16: Exposicon Oracle

Definición de un enlace de base de datos pública: Ejemplo

La siguiente declaración define un enlace de base de datos compartida pública llamada remota que se refiere a la base de datos especificada por el nombre del servicio remoto :

CREATE PUBLIC DATABASE LINK remoto USING "remota";

DBLINK

Ejemplos

Page 17: Exposicon Oracle

Este enlace permite que el usuario de base de datos de recursos humanos en el local de la base de datos para actualizar una tabla en la remota base de datos (suponiendo que h tiene los privilegios adecuados):

Empleados update @ remoto SET salario = salario * 1,1 WHERE last_name = 'Baer';

DBLINK

Page 18: Exposicon Oracle

Definición de un enlace de base de datos fija Usuario: Ejemplo

En la siguiente declaración, el usuario hr en la remota base de datos define un enlace de base de datos fija usuario llamado locales a la hora de esquema en el local de base de datos:

CREATE DATABASE LINK locales CONNECT TO HR IDENTIFIED BY hr USING 'local';

DBLINK

Page 19: Exposicon Oracle

Una vez que esta conexión de base de datos es creada, hr puede consultar las tablas en el esquema horas en el local de la base de datos de esta manera:

SELECT * FROM empleados @ local;

Usuario hr También puede utilizar las sentencias DML para modificar los datos en el local de base de datos:

INSERT INTO empleados @ local (Employee_id, apellidos, correo electrónico, hire_date, job_id) VALUES (999, 'Claus', '[email protected]', SYSDATE, 'SH_CLERK');

DBLINK

Page 20: Exposicon Oracle

UPDATE Empleo min_salary SET local = 3000 WHERE job_id = 'SH_CLERK';

DELETE FROM empleados @ local WHERE employee_id = 999;

DBLINK

Page 21: Exposicon Oracle

El uso de este enlace de datos fija, el usuario h en la remota base de datos también puede tener acceso a tablas que pertenecen a otros usuarios en la misma base de datos. Esta afirmación supone que el usuario hr ha SELECCIONAR privilegios en el oe.customers mesa. La declaración se conecta al usuario horas en el local de base de datos y luego consulta el oe . clientes tabla:

SELECT * FROM oe.customers @ local;

DBLINK

Page 22: Exposicon Oracle

Definición de un enlace de base de datos CURRENT_USER: EjemploLa siguiente declaración define un enlace de base de datos actual del usuario a la remota base de datos, usando el nombre de servicio completo como el nombre del enlace:

CREATE DATABASE LINK remote.us.oracle.com CONNECT TO CURRENT_USER USING "remota";

DBLINK

Page 23: Exposicon Oracle

DBLINK

Supongamos que tenemos dos bases de datos: productos y usuarios. La base de datos de productos almacena el inventario de una empresa, con los detalles de los artículos que oferta y entre los que se incluye el tipo de público al que se dirige cada artículo en particular. Por su parte la base de datos de usuarios contiene un ficha detallada de cada uno de los usuarios registrados en una web en la que se incluye la edad, sexo y lugar de residencia. En un determinado momento, la web decide realizar un estudio para comprobar que producto dentro de los ofertados por la empresa serían del agrado de sus usuarios en función de sus datos personales. Para realizar tal estudio decide contrastar la información de las dos bases de datos, y para ello deciden utilizar un DBLink que permita consultar datos de los productos desde la base de datos de usuarios. ¿Cuales serían los pasos a seguir?

Page 24: Exposicon Oracle

En primer lugar, en la base de datos de productos, debería crearse un usuario nuevo, que será el que se utilice para acceder a los datos de productos. Dicho usuario será un usuario normal de Oracle, y debería tener como mínimo permiso para conectar e iniciar sesión en la base de datos de productos, y por supuesto para acceder a los objetos (tablas, vistas, ...) que contengan los datos que se quieren poder consultar desde la base de datos de usuarios. En un caso bastante típico de este tipo de accesos lo que se hará será crear un role para aglutinar en él los permisos, en vez de asignárselos directamente al usuario, y crear vistas específicas para los datos que deben poder consultarse, en vez de permitir que pueda accederse directamente a toda la base de datos.

DBLINK

Page 25: Exposicon Oracle

DBLINK

BD 1CREATE ROLE rol;GRANT CONNECT TO rol;GRANT SELECT ON vista1 TO rol;GRANT SELECT ON vista2 TO rol;CREATE USER usuario IDENTIFIED BY clave;GRANT rol TO usuario;

BD2CREATE PUBLIC DATABASE LINK db_productosCONNECT TO usuarioIDENTIFIED BY claveUSING 'connect_string_productos';

Page 26: Exposicon Oracle

SELECT * FROM vista1@db_productos;

Aunque para simplificar las sentencias se puede crear un sinónimo en la base de datos de usuarios:

CREATE PUBLIC SYNONYM vista1_productos FOR vista1@db_productos;

De forma que pueda escribirse:

SELECT * FROM vista1_productos;

DBLINK

Page 27: Exposicon Oracle

Eliminar conexión

DROP DATABASE LINK <link_name>;

Eliminar conexión publica

PUBLIC DATABASE LINK <link_name>;

DBLINK

Page 28: Exposicon Oracle

CREATE DATABASE LINK PEPOTE_DBLINKCONNECT TO pepeIDENTIFIED BY pepoteUSING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST =MiHostname)(PORT = 1521)) (CONNECT_DATA = (SID = Oracle2)))‘

SELECT id,name FROM Usuarios@Pepote_dblink;

DBLINK