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图形化创建

dblink实现实现oracle跨库访问

 

  1. 通过sql语句创建

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

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

 

第四步:操作

查询:

select * from [email protected];

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

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

create synonym testcom FOR [email protected];

然后使用

select * from testcom;

select * from [email protected];

得到的是一样的结果

 

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

 

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

dblink实现实现oracle跨库访问

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