oracle跨库访问——dblink的使用

时间:2024-03-27 14:14:25

在写程序的时候多个服务器集成的项目也不少见,那么怎么实现多个服务器不同数据源的跨库访问操作数据呢。

oracle的数据库中有一个插件叫dblink(全称:database links),这个插件里可以建立其他数据连接中的代理对象,然后你需要的一系列操作都可以直接操作建立的dblink对象来完成。

具体过程:

 第一步:赋予权限

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

-- 查看wangyong用户是否具备创建database link 权限
select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='WANGYONG';

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

-- 给wangyong用户授予创建dblink的权限
grant create public database link to wangyong;

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

 

 第二步;创建database link

         我所了解到的创建方式有两种:1)通过pl/sql developer图形化创建、2)通过sqlplus中的sql语句创建,依次来看

         1)pl/sql developer 图形化创建

   oracle跨库访问——dblink的使用

     填写完成后点击“Apply”按钮即可创建成功。

 

         2)sql语句创建

-- 注意一点,如果密码是数字开头,用“”括起来
create public database link TESTLINK2 connect to WANGYONG identified by "123456" USING 'ORCL21'

       这样,就完成了简单database简单的创建

 

   第三步:操作

          首先,我们需要在ORCL2库中新建一张表,并插入部分数据,如下图:

           oracle跨库访问——dblink的使用

 

        现在,我们通过database link 在orcl中访问这张属于orcl2库中WANGYONG的表COMPANY

          oracle跨库访问——dblink的使用

     从截图中可以看到,在ORCL中可以成功访问到ORCL2中用户WANGYONG的表

     下面,利用同样的方式,进行插入,修改,删除操作,依次看截图,每一次操作后均执行查询语句,可对比执行效果:

     1)插入

     oracle跨库访问——dblink的使用

  2)修改

    oracle跨库访问——dblink的使用

3)删除

    oracle跨库访问——dblink的使用

     至此,简单的dblink操作就可以了,对于上面的链接字符串,还可以创建同义词代替,会稍微省点事

-- 创建同义词
create synonym TESTSYNONYM FOR [email protected];

     那么上面的查询、插入、修改、删除中可直接用WYSYNONYM代替[email protected]即可,例如查询语句可改成如下方式(插入,修改,删除类似):

-- 查询ORCL2中WANGYONG用户的表COMPANY
SELECT * FROM TESTSYNONYM order by id