Oracle使用DB Link连接达梦数据库

打印 上一主题 下一主题

主题 1815|帖子 1815|积分 5445

目标

     原有Oracle数据库使用DB Link同步到Oracle库的存储过程,因国产化信创导致目标库改为达梦数据库,调整同步方案,保证数据正常传输。
     方案

     使用Oracle提供的HS和ODBC去建立与达梦数据库的DB Link连接。(非透明网关)
     HS是Oracle数据库的一个基础框架,用于支持对异构数据源(非Oracle数据库)的透明访问。它提供了通用的接口和功能,使得Oracle数据库可以通过SQL直接查询外部数据源,犹如访问本地表一样。它的焦点功能是:
     

  • 提供数据字典转换(将外部数据源的对象映射到Oracle的数据字典)。
  • 支持SQL翻译(将Oracle SQL转换为目标数据库的语法)。
  • 管理连接池和事件协调。
     版本阐明

     

  • 源库:Oracle 12C
  • 目标库:达梦数据库V8
  • ODBC
     实施

     本次安装是在Windows使用体系上安装,该服务器已默认安装Oracle 12C。如未安装Oracle 12C,则还必要安装ODBC驱动。
     设置达梦ODBC源

     1、下载达梦安装包

     由于达梦数据未提供纯odbc部署包,因此我们要先下载windows版达梦完备包。下载网址为: 达梦下载网址
     

     2、解压并复制压缩包

     下载并解压后,在达梦镜像包中(/source/drivers)目次下能够找到odbc的包信息。将source资源目次下的bin和drivers/odbc复制到本地盘符下,比方我这里是E盘。
     

     3、设置情况变量和注册表

     由于不是通过安装包进行安装的,因此还必要设置情况变量和注册表。
     选中【此电脑】,右键【属性】,在【高级】页面找到【情况变量】,然后根据现实路径去设置。
     

     按“Win”键+“R”键大概右键运行,打开运行窗口。输入regedit,回车打开注册表窗口。然后选择【计算机】->【HKEY_LOCAL_MACHINE】->【SOFTWARE】->【ODBC】->【ODBCINST.INI】,选中【ODBC Drivers】,右键新建选择字符串值,字符串名称是DM8 ODBC Driver,字符串值是Installed。
     

     然后选中【ODBCINST.INI】,右键,新建【项】,名称为【DM8 ODBC Driver】。创建后,选中【DM8 ODBC Driver】,新建字符串值【Driver】,值为【E:\dm8\odbc\dodbc.dll】。继续新建字符串值【Setup】,值为【E:\dm8\odbc\dodbc.dll】。注意,根据现实情况修改路径。
     

     4、验证

     设置后,搜刮中输入ODBC,打开ODBC数据源。
     

     选中【体系DSN】,点击添加,即可看到DM8的数据源。如果没有DM8源,重新查抄注册表设置是否精确。
     

     然后输入达梦数据库的信息,点击测试,即可完成验证。
     

     设置Oracle HS

     1、设置HS

     Oracle 12C ORACLE_HOME目次中,默认有hs目次,可以直接修改hs来设置成达梦的ODBC源。
                                   登录后复制                        
  1. HS_FDS_CONNECT_INFO = DM8
  2. HS_FDS_TRACE_LEVEL = DEBUG
  3. HS_LANGUAGE = AMERICAN_AMERICA.zhs16gbk
  4. HS_NLS_NCHAR = UCS2
复制代码
      

  • 1.
  • 2.
  • 3.
  • 4.
                       参数阐明:
     

  • HS_FDS_CONNECT_INFO 指定连接目标数据信息,可以使用ODBC数据源名(DSN),大概直接指定连接字符串。比方:“DRIVER={SQL Server};SERVER=192.168.1.100;DATABASE=AdventureWorks;UID=userWD=password”
  • HS_FDS_TRACE_LEVEL 指定日志级别
  • HS_LANGUAGE 指定NLS情况
  • HS_NLS_NCHAR 指定HS署理进程NCHAR/NVARCHAR范例时使用的字符集
     

     2、设置监听和tnsname

     Oracle 12C ORACLE_HOME目次中,找到network/admin下,在监听中新增一行。
                                   登录后复制                        
  1. SID_LIST_LISTENER =
  2.   (SID_LIST =
  3.     (SID_DESC =
  4.       (SID_NAME = CLRExtProc)
  5.       (ORACLE_HOME = E:\app\Administrator\virtual\product\12.2.0\dbhome_1)
  6.       (PROGRAM = extproc)
  7.       (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\virtual\product\12.2.0\dbhome_1\bin\oraclr12.dll")
  8.     )
  9.     (SID_DESC =
  10.       (GLOBAL_DBNAME = ORCL)
  11.       (ORACLE_HOME = E:\app\Administrator\virtual\product\12.2.0\dbhome_1)
  12.       (SID_NAME = ORCL)
  13.     )
  14.     (SID_DESC =
  15.       (PROGRAM = dg4odbc)
  16.       (ORACLE_HOME = E:\app\Administrator\virtual\product\12.2.0\dbhome_1)
  17.       (SID_NAME = dg4odbc)
  18.     )
  19.   )
复制代码
      

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
                       参数阐明:
     

  • PROGRAM 对应hs的文件名,init_<文件名>.ora为固定格式,只必要写文件名即可
  • ORACLE_HOME 对应Oracle的安装文件目次,与原有监听保持一致即可
  • SID_NAME 对应tnsnames.ora中设置的别名,即TNS名称。
     

     同理,在tnsnames.ora文件中,新增一行设置,地点为Oracle服务器的IP和端口,SID为dg4odbc,对应HS设置的异构数据库信息。设置HS=OK即标识该TNS服务使用异构服务。
                                   登录后复制                        
  1. dg4odbc =
  2.   (DESCRIPTION =
  3.     (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-1FCP72313T6)(PORT = 1521))
  4.     (CONNECT_DATA =
  5.       (SID = dg4odbc)
  6.     )
  7.     (HS=OK)
  8.   )
复制代码
      

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
                       

     3、重启监听

     全部设置后,重启监听服务,静态辨认本地异构服务。
     

     验证

     使用DB Link连接异构数据库

                                   登录后复制                        
  1. --用法一
  2. CREATE DATABASE LINK dm_link
  3. CONNECT TO test IDENTIFIED BY "aaaaa"
  4. USING '(DESCRIPTION=
  5.          (ADDRESS=(PROTOCOL=TCP)(HOST=WIN-1FCP72313T6)(PORT=1521))
  6.          (CONNECT_DATA= ( sid = dg4odbc ) )
  7.          (HS=OK))';
  8. select * from OT_JBGW_DIABATES_INFO@dm_link;
复制代码
      

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表