实验版本
SELECT
*
FROM
SYS."V$VERSION"
UNION
SELECT
BUILD_VERSION
FROM
SYS."V$INSTANCE";
行号 BANNER
---------- -----------------------------------
1 DM Database Server 64 V8
2 DB Version: 0x7000c
3 03134284044-20230417-187846-20040
4 1-3-12-2023.04.17-187846-20040-ENT
DBLINK(Database Link) 数据库链接:顾名思义就是数据库的链接,就像电话线一样,是一个通道。当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须创建远程数据库的 DBLINK。 本地数据库通过 DBLINK 可以像访问本地数据库一样访问远程数据库表中的数据。
按照访问权限, 达梦数据库 DBLINK可以分为普通 DBLINK 和公用 DBLINK 两类:
普通 DBLINK :只有创建语句中标识的用户才可以访问远程数据库
公用 DBLINK :本地数据的所有
用户都可以访问远程数据库
按照源库和目标库的类型,达梦数据库常用的 DBLINK 又可以分为同构 DBLINK(DM-DM) 和异构 DBLINK( DM - ORACLE) 两类:
同构 DBLINK(DM - DM) :源端和目标端使用的数据库均为达梦数据库;本文介绍同构间DBLINK
按照源库和目标库的之间的连接源类型,又分DAMENG,ORACLE,ODBC.DPI四种
准备两台数据库服务器 源端NODE01(I:192.168.80.11 ,实例:DMSERVER01), 和数据库服务器 目的端NODE02(IP:192.168.80.8 ,实例:DMSERVER02)
两个服务器间网络互通
两个服务器都已安装好达梦数据库。且 NODE01 和 NODE01 的实例名不能相同
本篇文件只说明了,单向即从NODE01到NODE02的DBLINK连接,所以ODBC配置在NODE01配置
Linux下ODBC安装详情见文章
达梦数据库学习08:达梦数据库银河麒麟v10上配置 ODBC
找到ODBC中相关的库文件
[dmdba@NODE01 /data/dmdbms/bin 2023-08-18 09:11:28]
$ cd /opt/unixODBC-2.3.0/
[dmdba@NODE01 /opt/unixODBC-2.3.0 2023-08-18 09:11:41]
$ odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/dmdba/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
[dmdba@NODE01 /opt/unixODBC-2.3.0 2023-08-18 09:11:54]
$ find ./ -name "*.so"
./cur/.libs/libodbccr.so
./odbcinst/.libs/libodbcinst.so
./DriverManager/.libs/libodbc.so
注意考过去的库文件的数量和权限,数量和属组正确
[dmdba@NODE01 /opt/unixODBC-2.3.0 2023-08-18 09:12:11]
$ cp `find ./ -name "*.so"` /data/dmdbms/bin
[dmdba@NODE01 /opt/unixODBC-2.3.0 2023-08-18 09:13:30]
$ ll /data/dmdbms/bin/*odbc*
-rwxr-xr-x 1 dmdba dinstall 196529 7月 25 14:17 /data/dmdbms/bin/libdodbc.so
-rwxr-xr-x 1 dmdba dinstall 527408 8月 18 09:13 /data/dmdbms/bin/libodbccr.so
-rwxr-xr-x 1 dmdba dinstall 575352 8月 18 09:13 /data/dmdbms/bin/libodbcinst.so
-rwxr-xr-x 1 dmdba dinstall 2181440 8月 18 09:13 /data/dmdbms/bin/libodbc.so
[dmdba@NODE01 /opt/unixODBC-2.3.0 2023-08-18 09:13:52]
如果忘记拷贝库文件或者拷贝库文件不正确,会报找不到库文件
DBLINK(Database Link)数据库链接,可以理解成是一个通道,如果想通过本地数据库去访问另一个数据库中表的数据时,本地数据库中要创建远程数据库的DBLINK,通过DBLINK本地数据库可以访问远程数据库中表的数据,DM8的DBLINK借助达梦自身的MAL系统实现。
配置文件参数MAL_INI值为1
$ cat dm.ini|grep MAL_INI
MAL_INI = 1 #dmmal.i
两端dmmal.ini,配置需要完全一致
[dmdba@NODE01 /data/dmdata/DAMENG 2023-08-18 09:52:28]
$ cat dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMSERVER01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.80.11 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5238 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.80.11 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 192.168.80.8
MAL_PORT = 5238
MAL_INST_HOST = 192.168.80.8
MAL_INST_PORT = 5236
--创建DBLINK利用ODBC远程连接单实例
create link "SYSDBA"."LINK_TEST01" connect 'ODBC' with "SYSDBA" identified by "SYSDBA" using '192.168.80.8/5236';
--这里connect后面要指定ODBC,用户名,密码,IP,端口号 写的是NODE2端的
避坑指北:
达梦dm_svc.conf服务名配置详情见文章
达梦数据库dm_svc.conf文件配置达梦数据库dm_svc.conf文件配置
--在目标端NODE02上查看数据
$ disql sysdba/SYSDBA@192.168.80.8:5236
服务器[192.168.80.8:5236]:处于普通打开状态
登录使用时间 : 4.297(ms)
disql V8
10:06:13 sysdba@192.168.80.8:5236 > select count(*) from T1;
行号 COUNT(*)
---------- --------------------
1 999
--在源端NODE01上通过DBLINK查看NODE02的数据
$ disql sysdba/Dameng123@192.168.80.11:5236;
服务器[192.168.80.11:5236]:处于普通打开状态
登录使用时间 : 4.618(ms)
disql V8
10:04:39 sysdba@192.168.80.11:5236 > select count(*) from T1@LINK_TEST01;
行号 DBLINK_EXP_TMPALIAS_1
---------- ---------------------
1 999
已用时间: 4.552(毫秒). 执行号:901.
10:05:17 sysdba@192.168.80.11:5236 >
达梦社区技术https://eco.dameng.com
文章
阅读量
获赞