一、什么是DBLINK
dblink,顾名思义就是数据库的链接。
当我们要跨本地数据库访问另一个数据库中的表的数据时,在本地数据库中就必须要创建远程数据库的dblink,通过该dblink就可以达到访问远程数据库中表中数据的目的。
注意:dblink是单向的连接。
二、DBLINK创建实例
目的:
两台数据库服务器db_A(本地)和db_B(远程192.168.1.100),db_A下用户user_a 需要访问到db_B下user_b的数据。
步骤:
1、确定用户user_a有没有创建 dblink 的权限:
登陆用户user_a;
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
2、如果没有,以sys用户登录到本地数据库 给用户user_a赋权:
grant create public database link,drop public database link to user_a;
注:
dblink有三种权限:
CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了)
CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用)
DROP PUBLIC DATABASE LINK
3、以用户user_a登录本地数据库,创建dblink
create public database link dblink1 connect to user_b identified by user_bpass using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
dblink1 表示dblink名称;
user_b 表示远程数据库的用户;
user_bpass 表示远程数据库的密码;
port 表示远程端口;
service_name 表示远程数据库实例名
4、使用dblink
-- 查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。
select * from user_bTablename@dblink1 ;
#举例
#insert into test@dblink1 values (1);
#select * from test@dblink1;
一般情况下引用数据库链接,可以直接将其放到调用的表名或视图名称后面,中间使用一个 @ 作为分割符:
三、DBLINK常用命令
1、删除public的DBLINK
drop public database link dblink1;
删除非public的DBLINK
drop database link dblink1;
注*只有owner自己能删除自己的非public类型dblink。
2、查看数据库所有用户的DBLINK
select * from ALL_DB_LINKS;