Oracle创建DBlink

来源:互联网 发布:广东省云计算应用协会 编辑:程序博客网 时间:2024/06/05 12:05

当用户要跨本地Oracle数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

下面讲介绍如何在本地数据库中创建dblink。



创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库:

select * from user_sys_privs t where t.privilege like upper('%link%');

  
  


  可以看出在数据库中dblink有三种权限CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了),CREATE PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用),DROP PUBLIC DATABASE LINK。


  在sys用户下,把CREATE DATABASE LINK,CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK权限授予给你的用户

  
grant CREATE DATABASE LINK,CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;




 然后以scott用户登录本地数据库


  1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。


  
create public database link to_bylw connect to scott identified by tiger using 'bylw';



  其中to_bylw是你创建的dblink名字,bylw是远程数据库的实例名,scott/tiger是登录到远程数据库的用户/密码。然后在本地数据库中通过dblink访问远程数据库'bylw'中scott.tb_test表,sql语句如下所示


  
select * from tb_test@to_bylw;




  2.创建dblink的第二种方式,是在本地数据库tnsnames.ora文件中没有配置要访问的远程数据库


  
create database link to_bylw  connect to scott identified by tiger  using '(DESCRIPTION =  (ADDRESS_LIST =  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))  )  (CONNECT_DATA =  (SERVER = DEDICATED)  (SERVICE_NAME = bylw)  )  )';




  第二种是把第一种配置在tnsnames.ora文件中的信息,直接放在创建dblink语句后面。第一种情况tnsnames.ora文件中信息如下:

bylw =  (DESCRIPTION =  (ADDRESS_LIST =  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.5)(PORT = 1521))  )  (CONNECT_DATA =  (SERVER = DEDICATED)  (SERVICE_NAME = bylw)  )  )


 删除DBlink:

DROP DATABASE LINK to_bylw; 


原创粉丝点击