Oracle创建DBlink

有时候会存在在登录A数据库时需要访问B数据库的库表的需求,此时可以建立对B库的DBlink连接去访问。
例如,当我们在使用A数据库下的A_TEST用户登录A数据库时,需要访问B数据库B_TEST用户下的table_test表,可以如下去操作:

数据库信息如下:
A数据库:10.255.45.27:1521/orcl
A数据库用户/密码:A_TEST/654321
B数据库:10.255.45.28:1521/volteweb
B数据库用户/密码:volteweb/123456

操作步骤:
第一步:检查A_TEST是否有创建DBlink的权限

select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='A_TEST';

若没有查询到数据,那么直接查询 select * from user_sys_privs;当权限是"UNLIMITED TABLESPACE",表示这个用户有系统权限,也可以不授予DBlink的权限

第二步:若以上情况都不满足,则执行以下语句进行赋权

grant create public database link to A_TEST;

查看DBlink情况

select * from dba_db_links

-- 或者
select owner,object_name from dba_objects where object_type='DATABASE LINK'

创建和删除

创建DBlink

-- 格式
create public database link DBlink名   
connect to 用于连接目标库的用户 identified by 密码 
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)
(HOST = 目标数据库IP)(PORT = 目标数据库端口)))(CONNECT_DATA =(SERVICE_NAME = 目标数据库实例名称)))';


-- 实例:
-- 登录A数据库,创建对B库的DBlink连接
create public database link VOLTEWEB_28   
connect to volteweb identified by 123456
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)
(HOST = 10.255.45.28)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = volteweb)))';

-- 登录B数据库,创建对A库的DBlink连接
create public database link A_TEST_27 
connect to A_TEST identified by 654321
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)
  (HOST = 10.255.45.27)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';

删除DBlink

drop public database link DBlink名;

其他

创建DBlink之后,就能直接查询其他数据库的表。

select * from d_cell_all@VOLTEWEB_28

如果觉得这样麻烦,也可以先用DBlink创建视图,然后直接查视图。

create or replace view v_cell_all as
select * from d_cell_all@VOLTEWEB_28

-- 创建视图之后,可直接查询视图
select * from v_cell_all
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值