需求:在A数据库查询B数据库的数据
A数据库ip192.168.1.101,B数据库ip192.168.1.102
在A数据库上作业
create database link link名称 connect to B数据库用户名
identified by B数据库用户密码 using 'B数据库ip:端口/实例名';
赋权需要在sys下执行,赋予test01用户创建dblink的权限
grant create public database link,create database link to test01;
创建公共dblink(所有用户都能使用)
create public database link link01 connect to test01 identified by test01
using '192.168.1.102:1521/db02';--创建的dblink
#或者这样创建:
create public database link link01 connect to test01 identified by test01
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db02)
)
)';
使用test01用户创建私有dblink(只能创建的用户使用)
create database link link02 connect to test01 identified by test01
using '192.168.1.102:1521/db02';--创建的dblink
dblink使用,在A数据库上查询数据
select * from test01@link01;--查询B数据库test01用户下的test01表
select * from test01.test01@link01;
可以在A数据库上创建视图,当B数据库表更新后,A数据库上的视图也会更新
A数据库上有test01用户
create view test01.test01view as select * from test01@link01;
select * from test01.test01view;
select id from test01.test01view;
查询已创建的dblink
select * from dba_objects where object_type='DATABASE LINK';
select * from dba_db_links;
删除dblink
drop public database link link01;
drop database link link02;--创建dblink的用户下删除