DM-DM DBLINK使用配置

简单介绍

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使用限制

20220801170257
注:上述第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相关需求以及其他功能需求可以在社区发帖留言。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值