實際生產環境中,往往會遇到跨庫訪問和抽取數據。可以利用的工具舉不勝數,如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