实际生产环境中,往往会遇到跨库访问和抽取数据。可以利用的工具举不胜数,如ETL,DBLINK等工具,本文介绍在DM7中利用DBLINK实现数据库之间相互访问。
一、什么是DBLINK
DBLINK(DatabaseLink)数据库链接,可以理解成是一个通道,如果想通过本地数据库去访问另一个数据库中表的数据时,本地数据库中要创建远程数据库的DBLINK,通过DBLINK本地数据库可以访问远程数据库中表的数据,DM7的DBLINK借助达梦自身的MAL系统实现。
二、测试环境
实例名 |
IP地址 |
操作系统版本 |
数据库版本 |
DM1 |
192.168.10.61 |
NeoKylin Linux General Server release 6.0 64位 |
DM Database Server x64 V7.1.5.132-Build ENT |
DM2 |
192.168.10.62 |
NeoKylin Linux General Server release 6.0 64位 |
DM Database Server x64 V7.1.5.132-Build ENT |
修改192.168.10.61服务器的配置:
vim/dm7/data/DAMENG/dm.ini
INSTANCE_NAME = DM1
PORT_NUM = 5236
MAL_INI = 1
vim/dm7/data/DAMENG/dmmal.ini
[MAL_INST1]
MAL_INST_NAME= DM1
MAL_HOST= 192.168.10.61
MAL_PORT= 5256
MAL_INST_HOST= 192.168.10.61
MAL_INST_PORT= 5236
[MAL_INST2]
MAL_INST_NAME= DM2
MAL_HOST= 192.168.10.62
MAL_PORT= 5256
MAL_INST_HOST= 192.168.10.62
MAL_INST_PORT= 5236
修改192.168.10.62服务器的配置:
vim/dm7/data/DAMENG/dm.ini
INSTANCE_NAME = DM2
PORT_NUM = 5236
MAL_INI = 1
vim/dm7/data/DAMENG/dmmal.ini
[MAL_INST1]
MAL_INST_NAME= DM1
MAL_HOST= 192.168.10.61
MAL_PORT= 5256
MAL_INST_HOST= 192.168.10.61
MAL_INST_PORT= 5236
[MAL_INST2]
MAL_INST_NAME= DM2
MAL_HOST= 192.168.10.62
MAL_PORT= 5256
MAL_INST_HOST= 192.168.10.62
MAL_INST_PORT= 5236
四、重启数据库服务
192.168.10.61服务器:/etc/rc.d/init.d/DmServiceDM1restart
192.168.10.62服务器:/etc/rc.d/init.d/DmServiceDM2restart
五、在192.168.10.62服务器创建DBLINK
sql>CREATE PUBLIC LINK LINK1 CONNECT 'DAMENG' WITH SYSDBA IDENTIFIED BY"dameng123" USING '192.168.10.61/5256';
注意端口号哦!
创建完成可以利用V$DBLINK查看。
六、在192.168.10.61服务器创建测试表
sql>create table test (id int);
sql>insert into test values (1);
sql>commit;
七、在192.168.10.62服务器测试访问
sql>select * from test@link1;
行号 ID
---------------------
1 1
八、把192.168.10.61服务器dmhr.employee的数据抽到192.168.10.62的sysdba.t1表中。
sql>create table sysdba.t1 as select * from dmhr.employee@link1