社区地址:https://eco.dameng.com
1. 外部链接的作用
外部链接对象(LINK)是DM中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。通过多台数据库主库间的相互通讯,用户可以透明地操作远程数据库的数据,使应用程序看起来只有一个大型数据库。用户远程数据库中的数据请求,都被自动转换为网络请求,并在相应结点上实现相应的操作。用户可以建立一个数据库链接,以说明一个对象在远程数据库中的访问路径。这个链接可以是公用的(数据库中所有用户使用),也可以是私有的(只能被某个用户使用)。
用户可以通过外部链接对远程数据库的表进行查询和增删改操作,以及本地调用远程的存储过程。
创建DAMENG数据库外部链接,必须首先配置dmmal.in和dm.ini,才能使用link。
2. 外部链接的操作
2.1.为两数据库创建dmmal.ini文件。
[dmdba@server01 TESTDB1]$ vim/dmdata/TESTDB1/dmmal.ini
[MAL_INST1]
MAL_INST_NAME = TESTDB1
MAL_HOST = 192.168.118.101
MAL_PORT = 61141
MAL_INST_HOST = 192.168.235.101
MAL_INST_PORT = 5235
[MAL_INST2]
MAL_INST_NAME = TESTDB2
MAL_HOST = 192.168.118.101
MAL_PORT = 61142
MAL_INST_HOST = 192.168.235.101
MAL_INST_PORT = 5236
[dmdba@server01 TESTDB2]$ pwd
/dmdata/TESTDB2
[dmdba@server01 TESTDB2]$ vim /dmdata/TESTDB2/dmmal.ini
[MAL_INST1]
MAL_INST_NAME = TESTDB1
MAL_HOST = 192.168.118.101
MAL_PORT = 61141
MAL_INST_HOST = 192.168.235.101
MAL_INST_PORT = 5235
[MAL_INST2]
MAL_INST_NAME = TESTDB2
MAL_HOST = 192.168.118.101
MAL_PORT = 61142
MAL_INST_HOST = 192.168.235.101
MAL_INST_PORT = 5236
2.2.修改两数据库dm.ini文件中”MAL_INI”的值为1。
[dmdba@server01 TESTDB1]$ vim /dmdata/TESTDB1/dm.ini
[dmdba@server01 TESTDB2]$ vim /dmdata/TESTDB2/dm.ini
2.3.重启2个数据库。
[dmdba@server01 ~]$ systemctl list-units|grep DmS
DmServicetestdb1.service loaded active running DM Instance Service(DmServicetestdb1).
DmServicetestdb2.service loaded active running DM Instance Service(DmServicetestdb2).
[dmdba@server01 ~]$ systemctl stop DmServicetestdb1.service
[dmdba@server01 ~]$ systemctl start DmServicetestdb1.service
[dmdba@server01 ~]$ systemctl stop DmServicetestdb2.service
[dmdba@server01 ~]$ systemctl start DmServicetestdb2.service
2.4.检查mal链路是否建立成功。
[dmdba@server01 TESTDB1]$ disql sysdba/SYSDBA@TESTDB1
SQL> select * from v$mal_link_status;
行号 SRC_SITE DEST_SITE CTL_LINK_STATUS DATA_LINK_STATUS
---------- -------- --------- --------------- ----------------
1 TESTDB1 TESTDB2 CONNECTED CONNECTED
[dmdba@server01 TESTDB1]$ disql sysdba/SYSDBA@TESTDB1
SQL> select * from v$mal_link_status;
行号 SRC_SITE DEST_SITE CTL_LINK_STATUS DATA_LINK_STATUS
---------- -------- --------- --------------- ----------------
1 TESTDB2 TESTDB1 CONNECTED CONNECTED
2.5.在TESTDB1上创建1张表。
SQL> create table T_01(id int,name varchar);
操作已执行
2.6.在TESTDB2上创建1个外部链接。
SQL> create public link link1 connect with SYSDBA identified by SYSDBA using '192.168.118.101/61141';
操作已执行
2.7.在TESTDB2上通过外部链接向TESTDB1插入数据。
SQL> insert into T_01@link1 values(1,1);
影响行数 1
2.8.在TESTDB1上查询结果。
SQL> SELECT * FROM T_01;
行号 ID NAME
---------- ----------- ----
1 1 1
2.9.删除外部链接。
SQL> DROP PUBLIC LINK link1;
操作已执行
社区地址:https://eco.dameng.com




