Oracle读写SQLServer数据表

2024-04-09  本文已影响0人  xiaojieLu

最近有一个业务需求,需要在Oracle和SQLServer之间进行一些数据交互。之前一般是通过单独的同步工具来进行的,这次由于操作逻辑比较简单,就准备通过Oracle网关来实现,顺便记录操作步骤。

  1. 下载 Oracle Database 11g Database Gateway 11.2.0.1.0 ( Oracle Database Gateway for SQL Server )
    如果无法从官网下载,可以从百度网盘下载
    https://pan.baidu.com/s/1x-CDiAVNg0YrgZ2X0JFZNg?pwd=yiky

  2. 为了方便,我们直接在服务器上安装Gateway,安装时注意选择安装目录。

  3. 进行配置

    Oracle服务器基本信息
    version  11g
    ip 192.168.1.10
    port 1521
    
    SQLServer服务器基本信息
    version 2008R2
    ip 192.168.1.20
    port 1433
    DatabaseName  erp
    

    进入Oracle安装目录下的 dg4msql/admin目录下,拷贝initdg4msql.ora 文件为新的 initMSERP.ora

    并编辑内容为:

    HS_FDS_CONNECT_INFO="192.168.1.20:1433//erp"      --这里设置SQLServer数据库的地址,端口,和访问的数据库。 注意端口后是双斜线。
    HS_FDS_TRACE_LEVEL=OFF
    HS_FDS_RECOVERY_ACCOUNT=RECOVER
    HS_FDS_RECOVERY_PWD=RECOVER
    

    进入Oracle安装目录下的NETWORK/admin目录

    修改listener.ora ,增加监听

     SID_LIST_LISTENER =
       (SID_LIST =
         (SID_DESC =
           (SID_NAME = PLSExtProc)
           (ORACLE_HOME = D:/oracle/product/11.2.0/db_1)
           (PROGRAM = extproc)
         )
         (SID_DESC=
           (SID_NAME=MSERP) --对应dg4msql\admin目录下的init文件
           (ORACLE_HOME=D:/oracle/product/11.2.0/db_1)
           (PROGRAM=dg4msql)  
         )
    

    检查sqlnet.ora文件

    SQLNET.AUTHENTICATION_SERVICES= (NTS,NONE)
    NAMES.DIRECTORY_PATH = (TNSNAMES, HOSTNAME)
    

    修改tnsnames.ora文件

    SQLSERVER =
       (DESCRIPTION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.10)(PORT = 1521))
         )
         (CONNECT_DATA =
           (SID = MSERP)
         )
         (HS = OK)
       )
    

    重启监听

     lnsrctl stop
     lsnrctl start
    

    打开SQLPlus ,创建DBLINK

    create public database link ms_link 
    connect to "sa" identified by "sa" using 'SQLSERVER';  --这里替换为自己的访问SQLServer的用户名和密码。
    
    
    select * from test@ms_link;   
    就可以查询到SQLServer中的ERP数据库的test表数据内容。同样更新删除也是可以的,只要dblink的访问用户有权限即可。
    

    至此完工。

上一篇下一篇

猜你喜欢

热点阅读