dblink实现实现oracle跨库访问

一、什么是dblink(Database Link)

 

    数据库链接顾名思义就是数据库的链接 [1]  ,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

二、如何实现

下面介绍下步骤

第一步:配置环境

在tnsnames.ora中配置数据库别名:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 111.222.1.333)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

  
CQRBC =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 111.222.1.345)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCL是安装orcal数据库时自动生成的配置,现在需要的是在另外配置上一个数据库别名,也就是你需要跨库访问的那个数据库,CQRBC  别名可以随意取,HOST,PORT分别数据库对应的ip和端口,SERVICE_NAME 配置的就是实例名

在修改完配置文件后,最好重启下本地oracl服务

第二步:赋予权限

在创建database link之前,需要判断登陆的用户是否具备创建database link 的权限,执行以下的语句(用自己创建的用户登录):

-- 查看用户是否具备创建database link 权限

select * from user_sys_privs where privilege like upper('%DATABASE LINK%');

 

如果查询有返回行,则表示具备创建database link权限,否则,则需要使用sys登陆为你自己的用户赋予创建权限:

-- 给test用户授予创建dblink的权限

grant create public database link to test;

 

 此时,再执行上面查看是否具备权限的sql语句,会发现有返回行,表示,test这个用户已经具备创建database link的权限

 

第三步;创建database link

创建方式有两种:图形化创建,sql语句创建

  1. 通过pl/sql developer图形化创建

 

  1. 通过sql语句创建

create public database link TESTLINK2 connect to 用户名 identified by 密码 USING 'CQRBC'

用户名,密码输入你要跨库的数据库的用户名和密码,USING后面使用你开始在配置文件里面配置的数据库别名

 

第四步:操作

查询:

select * from thirdtable@TESTLINK2;

thirdtable为你自己需要查询的表名,TESTLINK2为你自己创建的连接名

如果觉得每次在操作表时都要在表名后面加上@TESTLINK2麻烦,可以创建同义词

create synonym testcom FOR thirdtable@TESTLINK2;

然后使用

select * from testcom;

select * from thirdtable@TESTLINK2;

得到的是一样的结果

 

这时你就可以在你自己数据库查询到你要跨库数据库的表的信息了

 

在我自己使用的过程中碰到如下错误

是因为配置文件没有配置好,在配置CQRBC别名时,前面还有空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值