Oracle通过DBLINK访问达梦数据库

环境需求

需要安装配置以下相关软件:

1、Oracle Gateways

2、ODBC数据源(gateway机器)

3、达梦数据库软件(gateway机器)

安装配置

Windows环境

安装达梦数据库软件

安装步骤省略,可以参考DM 数据库快速上手指南 | 达梦技术文档 (dameng.com)

Windows ODBC数据源配置

配置ODBC数据源名称为DM8DSN (后面gateway的initxxx.ora文件要用到)

image-20211123114321371

image-20211123114433393

安装Oracle Gateways

安装比较简单,安装组件选择ODBC

image-20211123105026831

由于Oracle gateways与数据库服务器安装在同一台机器,所以本次这里就不再进行监听创建(也可以创建),可以在配置好gateway相关配置文件后,在现有的Oracle数据库监听文件中添加gateway的监听。如果gateway与Oracle数据库服务器不在同一台,则这里需要创建gateway的监听。

image-20211123105308575

配置Oracle Gateways

进入到Gateway HOME目录下,本次安装的gateway home目录为C:\app\LW\gateways\11.2.0\tg_1。

主要配置文件目录在HOME目录下的hs/admin目录下:

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> ls


    目录: C:\app\LW\gateways\11.2.0\tg_1\hs\admin


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2013/10/9     13:29           1147 extproc.ora
-a----         2013/10/9     13:29            327 initdg4odbc.ora
-a----        2021/11/23     10:51            420 listener.ora.sample
-a----        2021/11/23     10:51            253 tnsnames.ora.sample

主要配置文件和模板文件内容如下:

1、initdg4odbc.ora(主要配置文件)

注意:文件名init后面接的是实例名,在监听文件中添加gateway监听信息时指定的SID_NAME

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> cat .\initdg4odbc.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = <odbc data_source_name>
HS_FDS_TRACE_LEVEL = <trace_level>


#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>

2、Gateway监听配置模板文件,在Oracle数据库服务器上已有创建监听的情况下,将SID_DESC那块内容复制到Oracle监听文件的SID_LIST下。

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> cat .\listener.ora.sample
# This is a sample listener.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent

LISTENER =
 (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
 )

SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=dg4odbc)
         (ORACLE_HOME=C:\app\LW\gateways\11.2.0\tg_1)
         (PROGRAM=dg4odbc)
      )
  )

#CONNECT_TIMEOUT_LISTENER = 0

3、tnsnames.ora配置模板文件,可以将文件中的内容添加到Oracle服务器的tnsnames.ora文件中

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> CAT .\tnsnames.ora.sample
# This is a sample tnsnames.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent

dg4odbc  =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
    (CONNECT_DATA=(SID=dg4odbc))
    (HS=OK)
  )
配置gateway initdg4dm8.ora文件

本次这里采用的是非默认的文件,复制initdg4odbc.ora文件并重命名为initdg4dm8.ora,配置内容如下:

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> cat .\initdg4dm8.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = DM8DSN   ----配置的ODBC数据源名称
HS_FDS_TRACE_LEVEL = OFF       ----调试排错的时候可以开启trace


#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>
配置listener.ora监听文件

本次是直接在Oracle数据库服务器上安装的gateway,直接在现有数据库监听配置文件中添加gateway监听信息。

本机ORACLE_HOME为:C:\app\LW\product\11.2.0\dbhome_1

本机Oracle数据库监听配置文件路径:ORACLE_HOME/network/admin,

添加内容如下:

PS C:\app\LW\product\11.2.0\dbhome_1\NETWORK\ADMIN> cat .\listener.ora
# listener.ora Network Configuration File: C:\app\LW\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\LW\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\LW\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
      (SID_DESC=
         (SID_NAME=dg4dm8)      ---SID_NAME对应gateway参数配置文件后面的名称init+SID_NAME.ora
         (ORACLE_HOME=C:\app\LW\gateways\11.2.0\tg_1)
         (PROGRAM=dg4odbc)      ---这里表示配置的是ODBC网关
      )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = LeeWen)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = C:\app\LW

然后,重启Oracle数据库监听。监听正常重启后,可以看到监听中已注册dg4dm8.

image-20211123120638863

配置tnsnames.ora文件

在ORACLE_HOME/network/admin/tnsnames.ora文件中添加如下内容:

dg4dm8  =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=LeeWen)(PORT=1521))
    (CONNECT_DATA=(SID=dg4dm8))
    (HS=OK)        ---这里表示连接的是异构数据库
  ) 

添加内容可以从之前Gateway安装后的模板文件中拷贝然后修改,内容中的SID与监听中配置的SID要相同,网络服务名可以自定义。

Oracle 数据库中创建DBLINK

达梦数据库用户为LINK_USER,密码为123456789

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create public database link LINK_DM8 connect to LINK_USER identified by "123456789" using 'dg4dm8';

数据库链接已创建。

SQL> select * from test@link_dm8;

BANNER
--------------------------------------------------------------------------------
ID_CODE
--------------------------------------------------------------------------------
DM Database Server 64 V8
1-2-70-21.09.24-147898-10028-ENT  Pack2

DB Version: 0x7000c
1-2-70-21.09.24-147898-10028-ENT  Pack2

创建成功,可以正常访问达梦数据库。

Linux环境

Linux环境上的达梦数据库软件安装以及Oracle Gateways安装配置,与Windows环境没有太大区别。

Linux环境上配置达梦数据库ODBC源可以参考达梦DBLINK之DM访问Oracle配置步骤 | 达梦技术社区 (dameng.com) 中的ODBC数据源配置。

简单测试总结

1、insert into 远程数据库表 select * from本地表

Oracle端不支持,报错:ORA-02025: SQL 语句的所有表均必须在远程数据库中

image-20211123143154842

2、insert into 本地表 select * from 远程数据库表

支持,但是需要注意本地表字段类型与远程数据库表字段类型匹配。

image-20211123143535303

同样,create table 本地表 as select * from 远程数据库表;也是可以正常执行。

image-20211123144340114

3、触发器

在触发器中使用DBLINK访问表也存在一些限制。

更多资讯请上达梦技术社区了解:https://eco.dameng.com

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值