dblink访问远程数据库-Oracle

Oracle 21NN 4周前 (06-24) 5次浏览 未收录 0个评论 扫描二维码

dblink访问远程数据库

 

当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。下面讲介绍如何在本地数据库中创建dblink.

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

  select * from user_sys_privs t

  where t.privilege like upper(‘%link%’);

  1 SYS CREATE DATABASE LINK NO

  2 SYS DROP PUBLIC DATABASE LINK NO

  3 SYS CREATE PUBLIC DATABASE LINK NO

 

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

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

  http://www.2cto.com  

  grant 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 scott.tb_test@to_bylw;

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

  create database link to_test

 

  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)

 

  )

 

  )

1、  在本地(oracle和phd主服务器)建立一个Oracle的客户端连接sxyuniformance,用于连接远程端机器的oracle数据库。

 

在远程端机器的数据库中,建立一个表用于测试,创建RTDB_TAG表。

create table uniformance.RTDB_TAG

(

 

          NAME VARCHAR2(30) not null,

 

          DES VARCHAR2(60),

 

          UNIT VARCHAR2(15),

 

          HI   VARCHAR2(20),

 

          LO   VARCHAR2(10)

)

在其中增加一条记录:

 

insert into uniformance.RTDB_TAG (NAME, DES, UNIT, HI, LO)

 

values (‘TAG1’, ‘TAG TEST1’, ‘M’, ‘10000’, ‘-100’);

  http://www.2cto.com  

2、  在oralce和phd服务器端登录PLSQL,创建远程数据库端的连接dblink

 

create database link dblink connect to uniformance identified by  uniformance using ‘sxyuniformance’;

 

dblink:database link的名称

 

uniformance:远程端oracle数据库的登录名

 

uniformance:远程端oracle数据库的登录密码

 

sxyuniformance:本地建立的连接到远程端的服务名称

 

注意:创建database link的时候,名字不是随便获取的,如果本地数据库的global_names的参数值为true,dblink的名称必须和远程数据库的global_names相同。

 

如何查看数据库的GLOBAL_NAME?

 

执行  SQL>SELECT * FROM GLOBAL_NAME;

  http://www.2cto.com  

如何查看Global_name参数是true还是False?

 

执行  SQL> show parameter global_name;

 

如何修改Global_name参数值?

 

执行  SQL>  alter system set global_names=false;

 

3、  测试连接是否成功

   select * from dual@dblink

   如果有结果返回则表示连接成功了。

4、在本地数据库中查询已经建立的远程连接名:

 

   SQL> select owner,object_name from dba_objects where object_type=’DATABASE LINK’;

 

    OWNER                    OBJECT_NAME

  http://www.2cto.com  

   Public                                 dblink

 

5、至此,在本地oracle和phd服务器上创建一个DBLINK,用于连接到远程端的数据库上,

 

在本地的数据库中查询远程端数据库中表的信息:

 

SQL> select * from RTDB_TAG@dblink

 

查询结果测试是否成功

 

 

作者 赵莫言


21NN.CN , 版权所有丨如未注明 , 均为原创丨转载请注明原文链接:dblink访问远程数据库-Oracle
喜欢 (0)
[1353713598@qq.com]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址