要创建到 DM 数据库的外部链接,支持开启MAL、无需开启MAL(DPI方式)以及ODBC方式,对于DM自身数据库间的链接建议就用自身协议,不要再通过ODBC,
对于开启MAL方式,必须先配置 dmmal.ini,才能使用 LINK,DM 的连接串有两种格式:
1、INSTANCE_NAME:直接使用远程库的实例名(该实例名必须配置到 dmmal.ini 中);
2、<IP 地址 >/< 端口号 >:其中端口号为 DM 外部链接服务器的 dmmal.ini 配置中的 MAL_PORT 端口号。
dmmal.ini 的详细配置可参考《DM8 系统管理员手册》,需要注意同时将 dm.ini 中的 MAL_INI 参数置为 1 以开启 MAL 系统。
以下为创建外部链接过程案例。
源 数据 库:DM8,IP:192.168.228.228
目标数据库:DM8,IP:192.168.228.31
源和目标数据库需要配置开启MAL系统
$ cd /home/dmdba/dmdbms/data/DAMENG
$ vi dm.ini
MAL_INI = 1
源和目标数据库的实例名一样,配置在同一个dmmal.ini配置文件中,会导致数据库无法启动,异常日志如:MAL_INST_NAME:[DMSERVER] is duplicated in [/home/dmdba/dmdbms/data/DAMENG/dmmal.ini]!
针对这个问题,以下分两个场景配置。
本场景中,源和目标数据库dmmal.ini配置一样:
$ cd /home/dmdba/dmdbms/data/DAMENG
$ vi dmmal.ini
[MAL_INST1]
MAL_INST_NAME = DMSERVER1 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.228 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.228 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
[MAL_INST2]
MAL_INST_NAME = DMSERVER2 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.31 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.31 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
源和目标数据库的实例名一样,配置在同一个dmmal.ini配置文件中,会导致数据库无法启动,异常日志如:MAL_INST_NAME:[DMSERVER] is duplicated in [/home/dmdba/dmdbms/data/DAMENG/dmmal.ini]!
配置原则:确保MAL_HOST所在服务器的MAL_INST_NAME和dm.ini中的INSTANCE_NAME一致。
[dmdba@db1 ~]$ cd /home/dmdba/dmdbms/data/DAMENG
[dmdba@db1 DAMENG]$ vi dmmal.ini
[MAL_INST1]
MAL_INST_NAME = DMSERVER #当前机器IP:192.168.228.228,确保MAL_INST_NAME和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.228 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.228 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
[MAL_INST2]
MAL_INST_NAME = DMSERVER2 #因为实例名一样会冲突,这里改为不一样的。
MAL_HOST = 192.168.228.31 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.31 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
[dmdba@db2 ~]$ cd /home/dmdba/dmdbms/data/DAMENG
[dmdba@db2 DAMENG]$ vi dmmal.ini
[MAL_INST1]
MAL_INST_NAME = DMSERVER2 #因为实例名一样会冲突,这里改为不一样的。
MAL_HOST = 192.168.228.228 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.228 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
[MAL_INST2]
MAL_INST_NAME = DMSERVER #当前机器IP:192.168.228.31,确保MAL_INST_NAME和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.31 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.31 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
配置好dmmal.ini,重启数据库后,创建LINK:
格式一:
SQL> CREATE OR REPLACE PUBLIC LINK DM_TO_DM_1 CONNECT 'DAMENG' WITH TEST IDENTIFIED BY 123456789 USING 'DBSERVER';
格式二:
SQL> CREATE OR REPLACE PUBLIC LINK DM_TO_DM_2 CONNECT 'DAMENG' WITH TEST IDENTIFIED BY 123456789 USING '192.168.228.31/5236';
注:
1、对于场景二,源和目标数据库实例名称一样,不能用格式一方式创建LINK,否则会提示:实例不存在。
2、当dmmal.ini中配置了MAL_INST_HOST和MAL_INST_PORT,使用格式二创建LINK时,使用的端口是MAL_INST_PORT,如果没配置,则使用MAL_PORT。
通过DPI方式,无需开启MAL,无需重启数据库,创建LINK语句如下:
SQL> CREATE OR REPLACE PUBLIC LINK DM_TO_DM_3 CONNECT 'DPI' WITH TEST IDENTIFIED BY 123456789 USING '192.168.228.31:5236';
查询返回记录则说明链接正常:
SQL> SELECT * FROM DUAL@DM_TO_DM_3;
行号 DUMMY
1 X
达梦在线服务平台 https://eco.dameng.com
文章
阅读量
获赞