zoukankan      html  css  js  c++  java
  • Oracle Gateways透明网关访问SQL Server

    自己的本机安装了Oracle 12c,公司的平台需要同时支持Oracle与SQL Server,很多时候都有将数据从Oracle同步到SQL Server的需求。通过SQL Server的link Server可以达到目的,但是因为SQL Server都是64位版本,试过很多次都失败了。再安装32位SQL Server也懒得折腾。
    因Oracle是12c, 安装的Gateways也是12c。尝试过在Oracle数据库服务器(本机)安装11g的gateways, 但是配置都失败了。
        Oracle Gateways 12c的下载地址也在Oracle Database 12c的下载页。找到与自己数据库版本的对应的Gateways。
    安装前,设置了一下环境变量ORACLE_HOME,我的是:C:oracleproduct12.1.0dbhome_1
    安装时,选择自己需要访问的数据库,这里是SQL Server.这里将Gateways安装到了与Oracle数据库软件相同的目录。
    安装过程:
    clip_image002

    clip_image004

    clip_image006
    配置是重点。网上找到的都是10g的配置。12c的目录名称与10g的稍有区别:
        listener.ora
        SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = CLRExtProc)
          (ORACLE_HOME = C:oracleproduct12.1.0dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:C:oracleproduct12.1.0dbhome_1inoraclr12.dll")
        )
    (SID_DESC =
          (SID_NAME = dg4msql)
          (ORACLE_HOME = C:oracleproduct12.1.0dbhome_1)
          (PROGRAM = dg4msql)
        )
      )
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        )
      )
    在tnsnames.ora添加以下内容:
    dg4msql =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SID = dg4msql)
        )
         (HS = OK)
      )
    在ORACLE_HOME/dg4msql/admin/initdg4msql.ora
    确认文件initdg4msql.ora中有以下内容():
    HS_FDS_CONNECT_INFO=server name,port number//database name
    HS_FDS_TRACE_LEVEL=OFF
    HS_FDS_RECOVERY_ACCOUNT=RECOVER
    HS_FDS_RECOVERY_PWD=RECOVER
    创建一个DB Link:
    create public database link MS_LINK
      connect to sa identified by password
      using 'dg4msql';
    重启监听。
    使用select * from table@ms_link的形式访问SQL Server表。不可以直接使用insert into table@ms_link select * from table向SQL Server表插入数据。错误提示是源表与目标表都应在同一个数据库。
    我的解决方法是使用一段匿名脚本一次一条数据。不知道有没有更好的办法。
    至此,已经可以成功在Oracle数据库中访问SQL Server的数据了。

    FROM: http://blog.itpub.net/8520577/viewspace-1066213/

  • 相关阅读:
    C# 温故而知新:Stream篇(—)
    C# 温故而知新:Stream篇(三)
    Unity教程之Unity Attribute的使用总结
    鹅厂分享会丨面向Unity程序员的Android快速上手教程
    【Unity】编辑器小教程
    浅析Unity 坐标系
    C# 温故而知新:Stream篇(五)
    C# 温故而知新:Stream篇(二)
    unity 协程原理与线程的区别
    简单获取2月天数
  • 原文地址:https://www.cnblogs.com/quanweiru/p/4905970.html
Copyright © 2011-2022 走看看