Oracle 连接 另一个Oracle数据库 服务器连接

一、场景
  两台不同的服务器A、B分别装有不同业务的oracle数据库,因业务需要,现需要将B中test表的数据,定时同步到A中。

二、实现
  根据以上场景,我想到了oracle中的dblink,当用户需要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库可以通过创建远程数据库的dblink,实现像访问本地数据库一样访问远程数据库表中的数据。

三、具体操作
1、用sysdba身份登录A服务器oracle,首先确定是否有创建link的权限,执行锁起来:
select * from user_sys_privs t where t.privilege like upper('%link%');
查询结果:SYS CREATE DATABASE LINK NO
        SYS DROP PUBLIC DATABASE LINK NO
         SYS CREATE PUBLIC DATABASE LINK NO

在数据库中dblink有三种权限
CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了),CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK(public表示所创建的dblink所有用户都可以使用),
    如果没有权限,可通过grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to sysdba赋予权限;

2、配置A服务器oracle的tnsnames.ora,将B数据库的连接配置进来:
TLINK =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.100.100.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle)
    )
  )

3、创建A-B的dblink:
create public database link alink
connect to scott identified by tiger using 'TLINK';

其中alink是你创建的dblink名字,'TLINK'是远程数据库的实例名,scott/tiger是登录到远程数据库的用户/密码。

4、执行sql,在本地数据库中通过dblink访问远程数据scott.test表,如下示例:
  select * from scott.test@alink where 1=1;

posted @ 2018-12-07 15:39  麻将我会  阅读(2758)  评论(0编辑  收藏