DM-DM DBLINK几种方式的配置和使用

本文介绍了达梦数据库DBLink的三种连接方式:dmmal、dpi和odbc,包括各自的配置步骤及创建示例。重点讲解了不同方式的配置复杂度及使用限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍

DM-DM DBLINK支持3种连接方式创建,分别是:dmmal、dpi、odbc。
其中dpi、odbc属于第三方接口,dmmal属于原生接口。dpi类型dblink为新版本新添加支持,以前版本中不支持。

环境说明

(1)数据库版本:
DM Database Server 64 V8
DB Version: 0x7000c
03134283904-20220714-165042-20005
(2)数据库信息
本地:端口 5236,实例名DMSERVER01,字符集GB18030
远端:端口 5237,实例名DMSERVER02,字符集GB18030
(3)已配置LD_LIBRARY_PATH环境变量

echo /usr/local/lib > /etc/ld.so.conf.d/libodbc.conf
echo /home/dmdba/dm128/bin > /etc/ld.so.conf.d/dm8.conf
ldconfig

复制

使用配置

dmmal方式

dmmal类型dblink,需要两端数据库设置dm.ini参数MAL_INI=1,并配置相同的dmmal.ini文件,重启数据库服务生效。
创建语法:


---方式1 ---mal_inst_host/mal_inst_port create link "链接名" connect 'DAMENG' with "用户名" identified by "密码" using '实例IP地址/实例端口号'; ---方式2 ---mal_host/mal_port create link "链接名" connect 'DAMENG' with "用户名" identified by "密码" using 'MAL IP地址/MAL 端口号'; ---方式3 ---mal_inst_name create link "链接名" connect 'DAMENG' with "用户名" identified by "密码" using '实例名';

复制

Step1 两端数据库配置dmmal(操作以及文件内容均相同)

1、设置dm.ini文件中MAL_INI参数值为1

sp_set_para_value(2,'MAL_INI',1);
或者直接vi dm.ini文件修改文件中MAL_INI参数值

复制

2、创建并配置dmmal.ini文件,(dmmal.ini文件路径为dm.ini中的CONFIG_PATH值,默认与系统库目录相同)
vi dmmal.ini 内容如下:

[MAL_INST1]
MAL_INST_NAME=DMSERVER01
MAL_HOST=192.168.238.20
MAL_PORT=62141
MAL_INST_PORT=5236
MAL_INST_HOST=192.168.238.20
[MAL_INST2]
MAL_INST_NAME=DMSERVER02
MAL_HOST=192.168.238.20
MAL_PORT=62142
MAL_INST_PORT=5237
MAL_INST_HOST=192.168.238.20

复制

关于dmmal.ini中相关配置项的含义,参考《DM8 系统管理员手册》。

3、重启两端数据库服务
cd $DM_HOME/bin
./DmServiceXXX restart

Step2 创建DBLINK

本地库访问远端库,在本地库中创建dblink。


################方式1 SQL> create link LINK_M1 connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using '192.168.238.20/5237'; 操作已执行 已用时间: 17.286(毫秒). 执行号:1300. SQL> SQL> select * from T1@LINK_M1; 行号 ID ---------- ----------- 1 1 SQL> ################方式2 SQL> create link LINK_M2 connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using '192.168.238.20/62142'; 操作已执行 已用时间: 6.763(毫秒). 执行号:1302. SQL> select * from T1@LINK_M2; 行号 ID ---------- ----------- 1 1 已用时间: 14.197(毫秒). 执行号:1303. SQL> ################方式3 SQL> create link LINK_M3 connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using 'DMSERVER02'; 操作已执行 已用时间: 6.312(毫秒). 执行号:1304. SQL> select * from T1@LINK_M3; 行号 ID ---------- ----------- 1 1 已用时间: 16.392(毫秒). 执行号:1305. SQL>

复制

ODBC方式

odbc类型的dblink,本地端数据库服务器上需要安装odbc包,并配置odbc数据源。
创建语法:


create link "链接名" connect 'ODBC' with "用户名" identified by "密码" using 'ODBC数据源名称';

复制

Step1 配置ODBC数据源

1、Linux环境odbc包安装(两种方式均可)
(1)方式一、源码编译安装

[root@localhost ~]# tar -zxvf unixODBC-2.3.9.tar.gz
[root@localhost ~]# cd unixODBC-2.3.9
[root@localhost unixODBC-2.3.9]# ./configure --enable-gui=no
[root@localhost unixODBC-2.3.9]# make
[root@localhost unixODBC-2.3.9]# make install

复制

(2)方式二、yum安装unixODBC、unixODBC-devel

(3)配置odbcinst.ini和odbc.ini文件
源码编译方式安装的odbc包对应配置文件目录为: /usr/local/etc/
yum方式安装的odbc包对应的配置文件路径为:/etc

odbcinst.ini配置文件内容:

[DM8 ODBC DRIVER]
Description=ODBC DRIVER FOR DM8
DRIVER=/home/dmdba/dm128/bin/libdodbc.so  ---$DM_HOME/bin/libdodbc.so

复制

odbc.ini 配置文件内容:

#####IP方式访问
[dm8]
Description=DM ODBC DSND
Driver= DM8 ODBC DRIVER
SERVER=192.168.238.20
UID=SYSDBA
PWD=SYSDBA
TCP_PORT=5237

#####DM 服务名方式访问
[dm8_svc]
Description=DM ODBC DSND
Driver= DM8 ODBC DRIVER
SERVER=SERVER_5237   ### dm_svc.conf中配置的服务名
UID=SYSDBA
PWD=SYSDBA
TCP_PORT=5237

复制

(4)dm_svc.conf文件配置如下:
[root@localhost ~]# cat /etc/dm_svc.conf

TIME_ZONE=(480)
LANGUAGE=(cn)

SERVER_5237=(192.168.238.20:5237)

复制

2、Windows环境ODBC配置
Windows系统配置较简单,Windows管理工具中打开"ODBC数据源(64位)"进行配置DSN。

Step2 创建DBLINK

本地库访问远端库,在本地库中创建dblink。


####使用IP方式的odbc数据源 SQL> create link LINK_ODBC connect 'ODBC' with "SYSDBA" identified by "SYSDBA" using 'dm8'; 操作已执行 已用时间: 17.831(毫秒). 执行号:1600. SQL> select * from T1@LINK_ODBC; 行号 ID ---------- ----------- 1 1 ####使用服务名方式的odbc数据源 SQL> create link LINK_ODBC_SVC connect 'ODBC' with "SYSDBA" identified by "SYSDBA" using 'dm8_svc'; 操作已执行 已用时间: 9.148(毫秒). 执行号:700. SQL> select * from T1@LINK_ODBC_SVC; 行号 ID ---------- ----------- 1 1 已用时间: 80.391(毫秒). 执行号:701. SQL>

复制

DPI方式

dpi类型的dblink,达梦数据库软件安装完成后自带DPI库,无需进行其他配置操作即可在数据库中直接创建dblink。
创建语法:


---方式1 IP:端口 create link "链接名" connect 'DPI' with "用户名" identified by "密码" using 'IP:端口'; ---方式2 使用dm_svc.conf中服务名 create link "链接名" connect 'DPI' with "用户名" identified by "密码" using '服务名';

复制

创建DBLINK示例


#### IP:Port的方式 SQL> create link LINK_DPI connect 'DPI' with "SYSDBA" identified by "SYSDBA" using '192.168.238.20:5237'; 操作已执行 已用时间: 13.716(毫秒). 执行号:1800. SQL> select * from t1@LINK_DPI; 行号 ID ---------- ----------- 1 1 已用时间: 9.878(毫秒). 执行号:1801. #### 服务名的方式 SQL> create link LINK_DPI_SVC connect 'DPI' with "SYSDBA" identified by "SYSDBA" using 'SERVER_5237'; 操作已执行 已用时间: 776.228(毫秒). 执行号:702. SQL> SQL> select * from T1@LINK_DPI_SVC; 行号 ID ---------- ----------- 1 1 已用时间: 158.347(毫秒). 执行号:703.

复制

DBLINK使用限制


注:上述第8项主要是指dmmal方式的dblink。

测试遇到的问题

在上面测试中使用服务名方式创建DBLINK之后,使用对应dblink查询遇到报错"连接丢失"。初步判断该问题的原因可能是环境变量加载的问题,本次测试时处理的方法是重启数据库服务(或者重启操作系统)解决,使用数据库IP均正常。

简单总结

1、当前版本开始,达梦数据库DBLINK的支持多种类型的DBLINK,包括DM-DM、ODBC、DPI、DM-ORACLE(OCI)。
2、对于DM与DM之间的DBLINK,三种方式中,使用DPI方式配置上最为方便,ODBC方式需要安装ODBC包并配置ODBC数据源,dmmal方式需要设置MAL_INI数据库参数、配置dmmal.ini文件并需要重启数据库服务。
3、该版本之后的正式发布的版本,ODBC、DPI方式应该支持了本地端通过创建远端对象dblink同义词(包同义词、序列同义词、函数同义词等)调用相关方法。比如:


---seq1为远端序列 create or replace SYNONYM sym_seq1 for seq1@LINK1; select sym_seq1.nextval from dual;

复制

4、使用使建议阅读《SQL使用手册》上DBLINK相关使用介绍以及使用限制。
5、随着产品不断完善,DBLINK支持的相关功能也会越来越完善。大家如果有其他DBLINK相关需求以及其他功能需求可以在社区发帖留言。

 

### 配置达梦数据库中的DBLink以连接至Oracle #### 使用OCI接口配置DBLink 为了使达梦数据库能够通过DBLink访问Oracle数据库,推荐采用Oracle OCI(Oracle Call Interface)方式进行配置[^3]。 - **下载并安装Oracle客户端驱动** Oracle Instant Client 是实现这一目标所必需的组件之一。可以从指定网站获取适用于操作系统的最新版本Instant Client包,并按照说明完成安装过程。 - **创建监听器** 在Oracle端需建立一个监听程序来接收来自达梦数据库发出的数据请求。这通常涉及到编辑`listener.ora`文件以及启动监听服务[^5]。 - **修改tnsnames.ora文件** 此文件用于定义网络服务名与实际数据库实例之间的映射关系,在其中添加针对目标Oracle数据库的服务条目是必要的步骤之一。 ```bash # Example entry in tnsnames.ora file ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host_ip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl_service_name) ) ) ``` - **在达梦侧执行SQL命令创建DBLink对象** 完成上述准备工作之后,可以在达梦环境中利用如下语句构建指向远程Oracle数据库链接: ```sql CREATE DATABASE LINK dblink_oracle CONNECT TO username IDENTIFIED BY password USING 'orcl'; ``` 此处`username`, `password`代表具有适当权限的Oracle账户凭证;而`'orcl'`则是之前于`tnsnames.ora`内设定好的网络服务名称[^4]。 --- #### ODBC方式配置DBLink 对于某些特定场景下可能更倾向于使用ODBC作为中间件来进行跨平台间通信,则可考虑基于此协议实施相应设置。 - **注册ODBC数据源** 参照相关文档指导,在操作系统层面建立起名为DM_TO_ORA_DSN的新DSN资源,确保其参数正确无误地指向待接入的目标Oracle服务器实例[^1]。 - **编写连接字符串** 构建适配当前环境变量条件下的完整连接串表达式,该字符串将被用来初始化后续所有经由本路径发起的操作指令集。 ```sql CREATE DATABASE LINK dblink_odbc CONNECT TO "SCHEMA" IDENTIFIED BY "PASSWORD" USING '(DESCRIPTION=(DRIVER={Microsoft ODBC for Oracle};SERVER=//oracle_server:port/service_name))' ``` 请注意替换掉模板里的占位符部分(`SCHEMA`,`PASSWORD`)为真实的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值