El rol de DBLINK: acceso entre dominios a la base de datos, puede acceder directamente a la tabla de la base de datos correspondiente, puede migrar directamente la tabla de la base de datos durante la copia de seguridad
Construir declaración DBLINK:
CREAR [COMPARTIDO] [PUBLIC] enlace de base de datos nombre_enlace
[CONECTAR A [usuario] [actual_usuario] IDENTIFICADO POR contraseña]
[AUTENTICADO POR usuario IDENTIFICADO POR contraseña]
[USANDO 'connect_string']
public: public significa que se pueden usar todos los usuarios del dblink creado. Si el usuario de conexión en dblink tiene el permiso de seleccionar cualquier tabla, entonces todos los usuarios pueden acceder a cualquier tabla de dblink, y solo el usuario creado puede usarlo sin ningún parámetro.
Verifique que la base de datos tenga DBLINK
select owner,object_name from dba_objects where object_type='DATABASE LINK';
o
select * from dba_db_links;
Compruebe si tiene permiso para crear DBLINK
Tome al usuario de Scott como ejemplo
select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='scott';
Si la consulta no devuelve datos, utilice sys o el inicio de sesión del usuario del sistema para otorgar permisos
grant create public database link to scott;
Crear DBLINK
Cree un enlace llamado testlink, la base de datos correspondiente es el nombre de usuario scott, la contraseña es 123456
1. En el archivo de configuración de la base de datos tnsnames.ora hay un alias de la base de datos: orcl (nombre de usuario: scott, contraseña: 123456)
El método de creación es el siguiente, usando alias directamente al usar:
create public database link testlink connect to scott identified by '123456' USING 'ORCL'
2. No hay un alias de base de datos correspondiente en el archivo de configuración de la base de datos tnsnames.ora: orcl (nombre de usuario: scott, contraseña: 123456)
El método de creación es el siguiente, complete la dirección IP de la base de datos correspondiente al usar
create database link 'linkname' connect to scott identified by '123456'
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)';
Eliminar el DBLINK correspondiente
drop databse link testlink
drop public databse link testlink
Utilice el DBLINK correspondiente
Para acceder a la tabla de estudiantes de otra base de datos en la base de datos local, la declaración es la siguiente, otro enlace de prueba es el nombre de DBLINK y otras operaciones de DML son las mismas, solo use student @ testlink en lugar del nombre de la tabla correspondiente.
select * from student@testlink
1. Insertar
insert into student@testlink values('id','name');
2. Modificar
update student@testlink set name='name' where id='id';
3. Eliminar
delete from student@testlink where id='id';
Crea sinónimos para el DBLINK correspondiente, fácil de usar y no permite que la gente sepa el nombre de DBLINK
create synonym student for student@testlink;
Puede utilizar directamente student en lugar de student @ tesklink en la ejecución de declaraciones DQL y DML
select * from student;
insert into student values('id','name');
delete from student where id='id';
create synonym student for student;