需要安装配置以下相关软件:
1、Oracle Gateways
2、ODBC数据源(gateway机器)
3、达梦数据库软件(gateway机器)
安装步骤省略,可以参考DM 数据库快速上手指南 | 达梦技术文档 (dameng.com)
配置ODBC数据源名称为DM8DSN (后面gateway的initxxx.ora文件要用到)
安装比较简单,安装组件选择ODBC
由于Oracle gateways与数据库服务器安装在同一台机器,所以本次这里就不再进行监听创建(也可以创建),可以在配置好gateway相关配置文件后,在现有的Oracle数据库监听文件中添加gateway的监听。如果gateway与Oracle数据库服务器不在同一台,则这里需要创建gateway的监听。
进入到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 =
HS_FDS_TRACE_LEVEL =
#
# Environment variables required for the non-Oracle system
#
#set =
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)
)
本次这里采用的是非默认的文件,复制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 =
本次是直接在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.
在ORACLE_HOME/network/admin/tnsnames.ora文件中添加如下内容:
dg4dm8 =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=LeeWen)(PORT=1521))
(CONNECT_DATA=(SID=dg4dm8))
(HS=OK) ---这里表示连接的是异构数据库
)
添加内容可以从之前Gateway安装后的模板文件中拷贝然后修改,内容中的SID与监听中配置的SID要相同,网络服务名可以自定义。
达梦数据库用户为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环境上的达梦数据库软件安装以及Oracle Gateways安装配置,与Windows环境没有太大区别。
Linux环境上配置达梦数据库ODBC源可以参考达梦DBLINK之DM访问Oracle配置步骤 | 达梦技术社区 (dameng.com) 中的ODBC数据源配置。
1、insert into 远程数据库表 select * from本地表
Oracle端不支持,报错:ORA-02025: SQL 语句的所有表均必须在远程数据库中
2、insert into 本地表 select * from 远程数据库表
支持,但是需要注意本地表字段类型与远程数据库表字段类型匹配。
同样,create table 本地表 as select * from 远程数据库表;也是可以正常执行。
3、触发器
在触发器中使用DBLINK访问表也存在一些限制。
更多资讯请上达梦技术社区了解:https://eco.dameng.com