美文网首页
Oracle读写SQLServer数据表

Oracle读写SQLServer数据表

作者: xiaojieLu | 来源:发表于2024-04-09 13:52 被阅读0次

    最近有一个业务需求,需要在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的访问用户有权限即可。
      

      至此完工。

    相关文章

      网友评论

          本文标题:Oracle读写SQLServer数据表

          本文链接:https://www.haomeiwen.com/subject/yejfxjtx.html