达梦到达梦的外部链接dblink(DM-DM DBLINK)

2023-12-21 12:36:14

一. 使用场景:

部链接对象(LINK)是 DM 中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。通过多台数据库主库间的相互通讯,用户可以透明地操作远程数据库的数据,使应用程序看起来只有一个大型数据库。用户远程数据库中的数据请求,都被自动转换为网络请求,并在相应结点上实现相应的操作。用户可以建立一个数据库链接,以说明一个对象在远程数据库中的访问路径。这个链接可以是公用的(数据库中所有用户使用),也可以是私有的(只能被某个用户使用)。

用户可以通过外部链接对远程数据库的表进行查询和增删改操作,以及本地调用远程的存储过程。

二 前置条件:
准备两台数据库服务器 A、B(目前只支持同平台,不支持跨平台建数据库连接),均安装了 DM 数据库,网络必须互通。
两个服务器间网络互通
两个服务器都已安装好达梦数据库。且 A 和 B 的实例名不能相同。两台数据库字符集要一致。
在这里插入图片描述

三 配置:

  1. 在两台机器的数据库实例下面创建dmmal.ini 文件
[dmdba@10-8-148-9 DAMENG1]$ vi dmmal.ini
[dmdba@10-8-148-9 DAMENG1]$ cat dmmal.ini
[DMSERVER1]     #自定义
MAL_INST_NAME = DMSERVER1       #实例名和dm.ini中的INSTANCE_NAME保持一致
MAL_INST_HOST = 10.8.148.9      #对外开放的服务IP地址
MAL_INST_PORT = 52336            #对外开放的服务端口和dm.ini中的PORT_NUM保持一致
MAL_HOST = 10.8.148.9           #系统监听TCP连接IP地址
MAL_PORT = 15252                        #系统监听TCP连接端口

[DMSERVER]      #自定义
MAL_INST_NAME = DMSERVER
MAL_INST_HOST = 10.8.148.7
MAL_INST_PORT = 52336
MAL_HOST = 10.8.148.7
MAL_PORT = 15253
[dmdba@10-8-148-7 DAMENG]$ vi dmmal.ini
[dmdba@10-8-148-7 DAMENG]$ cat dmmal.ini
[DMSERVER1]     #自定义
MAL_INST_NAME = DMSERVER1       #实例名和dm.ini中的INSTANCE_NAME保持一致
MAL_INST_HOST = 10.8.148.9      #对外开放的服务IP地址
MAL_INST_PORT = 52336            #对外开放的服务端口和dm.ini中的PORT_NUM保持一致
MAL_HOST = 10.8.148.9           #系统监听TCP连接IP地址
MAL_PORT = 15252                        #系统监听TCP连接端口

[DMSERVER]      #自定义
MAL_INST_NAME = DMSERVER
MAL_INST_HOST = 10.8.148.7
MAL_INST_PORT = 52336
MAL_HOST = 10.8.148.7
MAL_PORT = 15253

[dmdba@10-8-148-7 DAMENG]$
  1. 分别切换到数据库实例的目录,修改dm.ini文件
    在这里插入图片描述
    3:验证
[dmdba@10-8-148-9 DAMENG1]$ more /home/dmdba/data/DAMENG1/dm.ini|grep -E "INSTANCE_NAME|MAL_INI"
                INSTANCE_NAME                   = DMSERVER1                                     #Instance name
                MAL_INI                         = 1                     #dmmal.ini
[dmdba@10-8-148-9 DAMENG1]$
[dmdba@10-8-148-7 bin]$ more /data/DAMENG/dm.ini|grep -E "INSTANCE_NAME|MAL_INI"
                INSTANCE_NAME                   = DMSERVER                                    #Instance name
                MAL_INI                         = 1                     #dmmal.ini
[dmdba@10-8-148-7 bin]$
  1. 重启服务
 [dmdba@10-8-148-9 bin]$ ./DmServiceDMSERVER1 restart
DmServiceCATHY_S service is stopped.
Starting DmServiceCATHY_S:                                 [ OK ]
[dmdba@10-8-148-9 bin]$
[dmdba@10-8-148-7 bin]$ ./DmServiceDMSERVER2 restart
DmServiceDMSERVER2 service is stopped.
Starting DmServiceDMSERVER2:                               [ OK ]
  1. 创建测试表
    在A主机创建一个表test用来让B主机用外部连接进行操作
[dmdba@10-8-148-9 bin]$ ./disql SYSDBA/SYSDBA@LOCALH

服务器[LOCALHOST:52336]:处于普通打开状态
登录使用时间 : 1.677(ms)
disql V8
SQL> Create table test(c1 int,c2 int);
操作已执行
已用时间: 16.136(毫秒). 执行号:55200.
SQL>
  1. 创建dblink

在B主机建立外部连接操作A主机
create public link 外部连接名 connect with A主机登录用户 identified by A主机登录用户密码 using ‘A主机ip/a主机系统监听TCP连接端口’

disql V8
SQL> create public link dmlink1 connect with "SYSDBA" identified by "SYSDBA" using '10.8.148.9/52336';
操作已执行
已用时间: 11.755(毫秒). 执行号:501.
SQL> insert into test@dmlink1 values(1,1)
2   ;
insert into test@dmlink1 values(1,1);
操作已执行
SQL> commit;
操作已执行

在A服务器上查询数据,测试成功:

[dmdba@10-8-148-9 bin]$ ./disql SYSDBA/SYSDBA@LOCALHOST:52336

服务器[LOCALHOST:52336]:处于普通打开状态
登录使用时间 : 1.203(ms)
disql V8
SQL> select * from test;

行号     C1          C2
---------- ----------- -----------
1          1           1

已用时间: 0.889(毫秒). 执行号:55400.
SQL>

————————————————
版权声明:本文为CSDN博主「qq_37829708」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37829708/article/details/128494726
两台服务器,其中一个为目的主机 A,另一个为测试机 B;分别在这两台服务器上进入数据库安装目录下的库目录里修改 dm.ini 文件:MAL_INI=1,实例名 INSTANCE_NAME 要对应,且配置 dmmal.ini(如无此文件,新建此文件)如下所示

文章来源:https://blog.csdn.net/weixin_45699851/article/details/134990285
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。