外部链接记录了远程数据库的连接和路径信息,通过外部链接可以透明的操作远程数据库的数据。
环境检查
两台数据库机器A 、B,均安装了达梦数据库。
两台数据库机器A 、B,均关闭了防火墙和selinux。
两台数据库机器A 、B的实例名不能一致,两个数据库的字符集必须一致。
初始化实例
分别初始化两个实例
[dmdba@localhost bin]$ ./dminit path=/opt/dmdbms/data DB_NAME=DBLINK_01 INSTANCE_NAME=DBLINK_01
initdb V8
db version: 0x7000a
file dm.key not found, use default license!
License will expire on 2021-06-24
log file path: /opt/dmdbms/data/DBLINK_01/DBLINK_0101.log
log file path: /opt/dmdbms/data/DBLINK_01/DBLINK_0102.log
write to dir [/opt/dmdbms/data/DBLINK_01].
create dm database success. 2021-04-23 17:36:03
[dmdba@localhost bin]$
配置dmmal.ini
[dmdba@localhost DBLINK_01]$ vi dmmal.ini
[dmdba@localhost DBLINK_01]$ cat dmmal.ini
[dmlink1] #自定义
mal_inst_name = DBLINK_01 #A主机的实例名,和dm.ini中的INSTANCE_NAME保持一致
mal_inst_host = 192.168.8.102 #A主机的ip地址
mal_inst_port = 5237 #A主机的实例端口,和dm.ini中的PORT_NUM保持一致
mal_host = 192.168.8.102 #A主机的ip地址
mal_port = 61142 #系统监听TCP连接端口(自定义)
[dmlink2] #自定义
mal_inst_name = DBLINK_02 #B主机的实例名,和dm.ini中的INSTANCE_NAME保持一致
mal_inst_host = 192.168.8.103 #B主机的ip地址
mal_inst_port = 5237 #B主机的实例端口,和dm.ini中的PORT_NUM保持一致
mal_host = 192.168.8.103 #B主机的ip地址
mal_port = 61142 #系统监听TCP连接端口(自定义)
[dmdba@localhost DBLINK_01]$
修改dm.ini,设置MAL_INI = 1
创建外部链接
语法格式:
create public link 外部连接名 connect with A主机登录用户 identified by A主机登录用户密码 using 'A主机ip/a主机系统监听TCP连接端口'
示例:
create link "SYSDBA"."tian" connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using '192.168.8.103/61142';
测试
select *from SYSDBA."dblink_test"@"tian";