达梦数据库1:192.168.80.40 DMSERVER RHEL 6.5 64位
达梦数据库2:192.168.80.41 DMSERVER2 RHEL 6.5 64位
达梦数据库版本:
DM Database Server x64 V7.1.5.117-Build(2016.09.29-73607)ENT
要求具备条件1:
两台服务器之间能通,且将两台数据库服务器之间防火墙,SELINUX 关闭。(本人在实验的时候做了一次蠢事,防火墙使用service iptable stop 停掉后,后面有重启主机忘记再次停了,之后做DBLINK的测试,死活不行,建议在开始就将防火墙给禁掉。chkconfig iptables off)
要求具备条件2:
达梦安装需要用dm.key 否则DBLINK配置开启MAL不成功,必须进行安全功能设置,如果不配置dm.key就无法进行安全功能配置。
要求具备条件3:
两台数据库的实例名不能一致,如果一致则配置MAL时会报错,达梦数据库无法启动。
1、配置dm.ini 开启MAL,打通两台主机之间的通信链路
停止两台达梦数据库的实例
[root@oracleadg1 dameng7]# /etc/init.d/DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
[root@oracleadg2 dameng7]# /etc/init.d/DmServiceDMSERVER2 stop
Stopping DmServiceDMSERVER2: [ OK ]
修改dm.ini文件,开启MAL
该配置默为0:MAL_INI = 0,将该参数开启,设置为1
#configuration file
MAL_INI = 1 #dmmal.ini
ARCH_INI = 0 #dmarch.ini
REP_INI = 0 #dmrep.ini
LLOG_INI = 0 #dmllog.ini
TIMER_INI = 0 #dmtimer.ini
MPP_INI = 0 #dmmpp.ini
两个达梦数据库均以上配置,开启MAL后,需要配置dmmal.ini
2、配置dmmal.ini 文件,设置MAL相关参数
两个达梦数据库均配置dmmal.ini文件,该文件可以参考dmmal_example.ini ,可复制下来可以修改,也可以自己编辑,内容如下:
[dmdba@oracleadg1 DAMENG]$ cat dmmal.ini
[mal_inst1]
mal_inst_name = DMSERVER
mal_host = 192.168.80.40
mal_port = 5400
[mal_inst2]
mal_inst_name = DMSERVER2
mal_host = 192.168.80.41
mal_port = 5400
[mal_inst1] :表示达梦实例1,
[mal_inst2] :表示达梦实例2,下面配置对于该实例的一些配置。
mal_inst_name:MAL实例名与数据库实例保持一致
mal_host :数据库实例服务器地址
mal_port :数据库定义mal端口,不能配置为5236,需配置其他的端口名。
两台数据库均配置一样,配置后需要重启达梦数据库
3、重启两台主机上的达梦数据库
[root@oracleadg1 dameng7]# /etc/init.d/DmServiceDMSERVER restart
Stopping DmServiceDMSERVER: [ OK ]
Starting DmServiceDMSERVER: [ OK ]
[root@oracleadg2 dameng7]# /etc/init.d/DmServiceDMSERVER2 restart
Stopping DmServiceDMSERVER2: [ OK ]
Starting DmServiceDMSERVER2: [ OK ]
重启后可以通过netstat 验证MAL端口是否正常监听
[root@oracleadg1 dameng7]# netstat -an|grep 5400
tcp 0 0 192.168.80.40:42931 192.168.80.41:5400 ESTABLISHED
tcp 0 0 192.168.80.40:60899 192.168.80.40:5400 ESTABLISHED
tcp 0 0 :::5400 :::* LISTEN
tcp 0 0 ::ffff:192.168.80.40:5400 ::ffff:192.168.80.41:33685 ESTABLISHED
tcp 0 0 ::ffff:192.168.80.40:5400 ::ffff:192.168.80.40:60899 ESTABLISHED
[root@oracleadg1 dameng7]#
能正常监听,则配置成功,否则需检查那个地方配置有误。
4、建立DBLINK并测试
在源机192.169.80.40上创建DBLINK,如下:
[root@oracleadg1 ~]# /dameng7/dmdbms/bin/disql sysdba/oracle
服务器[LOCALHOST:5236]:处于普通打开状态
使用普通用户登录
登录使用时间: 51.697(毫秒)
disql V7.1.5.117-Build(2016.09.29-73607)ENT
Connected to: DM 7.1.5.117
SQL> CREATE or replace PUBLIC LINK LINK02 CONNECT 'DAMENG' WITH SYSDBA IDENTIFIED BY oracle USING '192.168.80.41/5400';
操作已执行
已用时间: 38.163(毫秒). 执行号:9.
SQL> select * from v$version@LINK02;
行号 BANNER
---------- --------------------------------------------------------------
1 DM Database Server x64 V7.1.5.117-Build(2016.09.29-73607)ENT
2 DB Version: 0x70009
已用时间: 00:00:02.423. 执行号:10.
也可以在192.169.80.41上创建DBLINK连接40上的达梦数据库,如下:
[root@oracleadg2 ~]# /dameng7/dmdbms/bin/disql sysdba/oracle
服务器[LOCALHOST:5236]:处于普通打开状态
使用普通用户登录
登录使用时间: 680.260(毫秒)
disql V7.1.5.117-Build(2016.09.29-73607)ENT
Connected to: DM 7.1.5.117
SQL> CREATE or replace PUBLIC LINK LINK02 CONNECT 'DAMENG' WITH SYSDBA IDENTIFIED BY oracle USING '192.168.80.40/5400';
操作已执行
已用时间: 00:00:02.190. 执行号:10.
SQL> select * from v$version@LINK02;
行号 BANNER
---------- --------------------------------------------------------------
1 DM Database Server x64 V7.1.5.117-Build(2016.09.29-73607)ENT
2 DB Version: 0x70009
已用时间: 578.159(毫秒). 执行号:11.
测试验证OK,达梦数据库之间的DBLINK配置完成。
1、达梦数据库服务器之间通信要通,且防火墙,SELINUX关闭,否则提示如下报错
SQL> select * from v$version@LINK02;
select * from v$version@LINK02;
第1 行附近出现错误[-2251]:DBLINK远程服务器获取对象[v$version]失败.
已用时间: 26.456(毫秒). 执行号:5.
2、达梦数据库安装配置时必须要配置dm.key,否则无法开启MAL。
3、配置端口不要配置数据库访问端口,如5236 ,配置其他端口。
4、创建DBLINK一定要使用MAL端口,否则提示如下错误信息:
CREATE or replace PUBLIC LINK LINK02 CONNECT 'DAMENG' WITH SYSDBA IDENTIFIED BY oracle USING '192.168.80.40/5236';
第1 行附近出现错误[-8707]:实例不存在.
已用时间: 00:00:01.003. 执行号:11.
5、注意SQL串中用户为大写,否则提示如下错误信息:
SQL> select * from v$version@LINK02;
select * from v$version@LINK02;
第1 行附近出现错误[-2251]:DBLINK远程服务器获取对象[v$version]失败.
已用时间: 26.456(毫秒). 执行号:5.