不同数据库间的数据访问--dblink

来源:互联网 发布:什么软件定位经纬度 编辑:程序博客网 时间:2024/05/16 05:33

在我们实际应用过程中会经常遇到这个问题,两个不同系统间要进行数据传输。

那我现在的这个项目来说吧,我这里的基础数据是来自其他系统,这个时候我们就需要读取其他数据库表中的数据了。

遇到这个问题创建dblink是个很好的解决方法,具体操作如下:

1、注意关闭两台计算机上的Windows的防火墙,否则,会出现能ping通,但Oracle连接不通的情况。

2、全局数据库名,SELECT * FROM GLOBAL_NAME    

    修改可以用以下语句来修改参数值:

   ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

  当数据库参数global_name=false时,就不要求数据库链接名称跟远端数据库名称一样,为了简单我是按照FALSE来操作的

3、创建dblink的语法:

   CREATE [PUBLIC] DATABASE LINK link

   CONNECT TO username IDENTIFIED BY password

   USING ‘connectstring’

  我的例子:

   --创建dblink
create database link DTBJ.US.ORACLE.COM connect to PLATFORM identified by PLATFORM using 'DTBJ';

我当时是到这样就以为可以了,然后就用测试dblink的语句进行测试

  --测试dblink
  select * from dual@DTBJ.US.ORACLE.COM

提示:没有监听!

我用的是客户端,没有在服务器上建立连接远程的本地网络服务名。

修改tnasname的内容

DTBJ=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ******)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DTBJ)
    )
  )

再次执行测试语句

SQL>  select * from dual@DTBJ.US.ORACLE.COM;

D
-
X
 这样就表示dblink创建好了,随后为DTBJ里的表建了同义词就可以正常操作DTBJ表里的数据了

 

查询创建了多少dblink

select * from ALL_DB_LINKS;

OWNER VARCHAR2(30)   
DB_LINK VARCHAR2(128)    --  Name of the database link
USERNAME VARCHAR2(30)   --  Name of user to log on as
HOST VARCHAR2(2000)  -- SQL*Net string for connect
CREATED DATE   --Creation time of the database link

 

原创粉丝点击