DAMO开发者矩阵 Oracle使用DB Link连接达梦数据库

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

目的原有Oracle数据库使用DB Link同步到Oracle库的存储过程,因国产化信创导致目标库改为达梦数据库,调整同步方案,保证数据正常传输。方案使用Oracle提供的HS和ODBC去建立与达梦数据库的DB Link连接。(非透明网关)HS是Oracle数据库的一个基础框架,用于支持对异构数据源(非Oracle数据库)...

目的

原有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版达梦完整包。下载网址为: 达梦下载网址

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

2、解压并复制压缩包

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

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

3、配置环境变量和注册表

由于不是通过安装包进行安装的,因此还需要配置环境变量和注册表。

选中【此电脑】,右键【属性】,在【高级】页面找到【环境变量】,然后根据实际路径去配置。

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

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

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

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

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

4、验证

配置后,搜索中输入ODBC,打开ODBC数据源。

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

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

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

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

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

配置Oracle HS

1、配置HS

Oracle 12C ORACLE_HOME目录中,默认有hs目录,可以直接修改hs来配置成达梦的ODBC源。

HS_FDS_CONNECT_INFO = DM8
HS_FDS_TRACE_LEVEL = DEBUG
HS_LANGUAGE = AMERICAN_AMERICA.zhs16gbk
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=user;PWD=password”
  • HS_FDS_TRACE_LEVEL 指定日志级别
  • HS_LANGUAGE 指定NLS环境
  • HS_NLS_NCHAR 指定HS代理进程NCHAR/NVARCHAR类型时使用的字符集

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

2、配置监听和tnsname

Oracle 12C ORACLE_HOME目录中,找到network/admin下,在监听中新增一行。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\Administrator\virtual\product\12.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\virtual\product\12.2.0\dbhome_1\bin\oraclr12.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = E:\app\Administrator\virtual\product\12.2.0\dbhome_1)
      (SID_NAME = ORCL)
    )
    (SID_DESC =
      (PROGRAM = dg4odbc)
      (ORACLE_HOME = E:\app\Administrator\virtual\product\12.2.0\dbhome_1)
      (SID_NAME = dg4odbc)
    )
  )
  • 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名称。

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

同理,在tnsnames.ora文件中,新增一行配置,地址为Oracle服务器的IP和端口,SID为dg4odbc,对应HS配置的异构数据库信息。配置HS=OK即标识该TNS服务使用异构服务。

dg4odbc =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-1FCP72313T6)(PORT = 1521))
    (CONNECT_DATA =
      (SID = dg4odbc)
    )
    (HS=OK)
  )
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

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

3、重启监听

全部配置后,重启监听服务,静态识别本地异构服务。

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

验证

使用DB Link连接异构数据库
--用法一
CREATE DATABASE LINK dm_link
CONNECT TO test IDENTIFIED BY "aaaaa"
USING '(DESCRIPTION=
         (ADDRESS=(PROTOCOL=TCP)(HOST=WIN-1FCP72313T6)(PORT=1521))
         (CONNECT_DATA= ( sid = dg4odbc ) )
         (HS=OK))';

select * from OT_JBGW_DIABATES_INFO@dm_link;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐

  • 浏览量 1796
  • 收藏 0
  • 0

所有评论(0)

查看更多评论 
已为社区贡献10条内容