高、低不同版本的达梦数据库之间也存在跨库访问的需求,例如有2个DM数据库DM1(8.1.2.70)、DM2(8.1.3.100),既有高版本DM2要访问低版本DM1中的数据,同时低版本的DM1要访问高版本的DM2中的数据,本文将通过dmmal,DPI,ODBC这3种方式实现dblink的验证结果。
后续篇幅较长,为了方便阅读,特将验证结果放在本章节。验证结果为:若数据库之间的版本跨度较大,只有ODBC方式是有效。如下图
图:版本跨度较大的DM数据库通过dblink相互访问验证结果
角色 本地端/远程端 远程端/本地端
数据库版本 8.1.2.70(2021.09.24)8.1.3.100(2023.11.27)
数据库名 DM1 DM2
实例名 DM1SVR DM2SVR
字符集 GB18030 GB18030
IP 172.16.1.1 172.16.1.2
数据库端口 5236 5236
MAL端口号 61611 61612
用户 udm1 udm2
表 t1 t2
DM1执行
–dmdba70
cd /home/dmdba70/dmdbms/bin/
./dminit path=/home/dmdba70/dmdbms/data DB_NAME=DM1 INSTANCE_NAME=DM1SVR CHARSET=0 PORT_NUM=5236
--root
/home/dmdba70/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DM1SVR -dm_ini /home/dmdba70/dmdbms/data/DM1/dm.ini -m open
systemctl enable DmServiceDM1SVR
systemctl start DmServiceDM1SVR
DM2执行
cd /home/dmdba100/dmdbms/bin/
./dminit path=/home/dmdba100/dmdbms/data DB_NAME=DM2 INSTANCE_NAME=DM2SVR CHARSET=0 PORT_NUM=5236
--root
/home/dmdba100/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DM2SVR -dm_ini /home/dmdba100/dmdbms/data/DM2/dm.ini -m open
systemctl enable DmServiceDM2SVR
systemctl start DmServiceDM2SVR
DM1和DM2的dm.ini配置
vi /home/dmdba70/dmdbms/data/DM1/dm.ini
MAL_INI =1
vi /home/dmdba100/dmdbms/data/DM2/dm.ini
MAL_INI =1
DM1和DM2的dmmal.ini配置
cat > /home/dmdba70/dmdbms/data/DM1/dmmal.ini <<EOF
[MAL_INST1]
MAL_INST_NAME=DM1SVR
MAL_HOST=172.16.1.1
MAL_PORT=6161
MAL_INST_PORT=5236
MAL_INST_HOST=172.16.1.1
[MAL_INST2]
MAL_INST_NAME=DM2SVR
MAL_HOST=172.16.1.2
MAL_PORT=6162
MAL_INST_PORT=5236
MAL_INST_HOST=172.16.1.2
EOF
cat > /home/dmdba100/dmdbms/data/DM2/dmmal.ini <<EOF
[MAL_INST1]
MAL_INST_NAME=DM1SVR
MAL_HOST=172.16.1.1
MAL_PORT=6161
MAL_INST_PORT=5236
MAL_INST_HOST=172.16.1.1
[MAL_INST2]
MAL_INST_NAME=DM2SVR
MAL_HOST=172.16.1.2
MAL_PORT=6162
MAL_INST_PORT=5236
MAL_INST_HOST=172.16.1.2
EOF
cd /home/dmdba100/dmdbms/bin/
./DmServiceDM1SVR restart
cd /home/dmdba100/dmdbms/bin/
./DmServiceDM2SVR restart
[dmdba100@db1 bin]$ ss -lntp |grep dmserver
LISTEN 0 128 *:6161 *:* users:(("dmserver",pid=20314,fd=10))
LISTEN 0 128 *:5236 *:* users:(("dmserver",pid=20314,fd=5))
[dmdba100@db1 bin]$
[dmdba100@db2 bin]$ ss -lntp |grep dmserver
LISTEN 0 128 *:6162 *:* users:(("dmserver",pid=13219,fd=10))
LISTEN 0 128 *:5236 *:* users:(("dmserver",pid=13219,fd=5))
[dmdba100@db2 bin]$
DM1数据库执行
[dmdba70@db1 ~]$ cd /home/dmdba70/dmdbms/bin/
[dmdba70@db1 bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.706(ms)
disql V8
SQL>
SQL> create user udm1 identified by "Dameng@1234";
操作已执行
已用时间: 5.748(毫秒). 执行号:500.
SQL>
SQL> create table udm1.t1 as select * from dba_objects;
操作已执行
已用时间: 19.829(毫秒). 执行号:503.
SQL> select top 1 * from udm1.t1;
行号 OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID
---------- ------ ----------- -------------- --------- --------------
OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP
----------- -------------------------- ------------- ---------
STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME
------ --------- --------- --------- --------- ------------
1 CTISYS CTISYS NULL 150994948 NULL
SCH 2024-04-05 21:54:06.403867 NULL NULL
VALID N NULL NULL NULL NULL
已用时间: 0.655(毫秒). 执行号:504.
SQL>
DM2数据库执行
[dmdba100@db2 bin]$ cd /home/dmdba100/dmdbms/bin/
[dmdba100@db2 bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.249(ms)
上次登录ip : ::1
上次登录时间 : 2024-04-05 18:29:29
登录失败次数 : 0
口令是否过期 : 未过期
disql V8
SQL> create user udm2 identified by "Dameng@1234";
操作已执行
已用时间: 4.910(毫秒). 执行号:801.
SQL> create table udm2.t2 as select * from dba_objects;
操作已执行
已用时间: 39.658(毫秒). 执行号:802.
SQL> select top 1 * from udm2.t2;
行号 OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID
---------- ------ ----------- -------------- --------- --------------
OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP
----------- -------------------------- ------------- ---------
STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME
------ --------- --------- --------- --------- ------------
1 CTISYS CTISYS NULL 150994948 NULL
SCH 2024-04-05 18:12:29.544126 NULL NULL
VALID N NULL NULL NULL NULL
##
已用时间: 0.850(毫秒). 执行号:803.
SQL>
[dmdba70@db1 bin]$
[dmdba70@db1 bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 1.137(ms)
disql V8
SQL> create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using 'DM2SVR';
操作已执行
已用时间: 4.532(毫秒). 执行号:600.
SQL> select count(*) from t2@dmlinkdm2;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.759(毫秒). 执行号:0.
SQL> select top 1 * from t2@dmlinkdm2;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.220(毫秒). 执行号:0.
SQL> create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using '172.16.1.2/5236';
操作已执行
已用时间: 4.978(毫秒). 执行号:601.
SQL> select count(*) from t2@dmlinkdm2;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.259(毫秒). 执行号:0.
SQL> select top 1 * from t2@dmlinkdm2;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.525(毫秒). 执行号:0.
SQL> create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using '172.16.1.2/6162';
操作已执行
已用时间: 3.262(毫秒). 执行号:602.
SQL> select count(*) from t2@dmlinkdm2;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.115(毫秒). 执行号:0.
SQL> select top 1 * from t2@dmlinkdm2;
select top 1 * from t2@dmlinkdm2;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 0.937(毫秒). 执行号:0.
SQL>
SQL>
[dmdba100@db2 bin]$ ./disql SYSDBA/SYSDBA
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 16.185(ms)
上次登录ip : ::1
上次登录时间 : 2024-04-05 18:32:52
登录失败次数 : 0
口令是否过期 : 未过期
disql V8
SQL>
SQL> create or replace link dmlinkdm1 connect 'DAMENG' with udm1 identified by "Dameng@1234" using 'DM1SVR';
操作已执行
已用时间: 4.465(毫秒). 执行号:501.
SQL> select count(*) from t1@dmlinkdm1;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.812(毫秒). 执行号:0.
SQL> select top 1 * from t1@dmlinkdm1;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.115(毫秒). 执行号:0.
SQL> create or replace link dmlinkdm1 connect 'DAMENG' with udm1 identified by "Dameng@1234" using '172.16.1.1/5236';
操作已执行
已用时间: 6.120(毫秒). 执行号:502.
SQL> select count(*) from t1@dmlinkdm1;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.098(毫秒). 执行号:0.
SQL> select top 1 * from t1@dmlinkdm1;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.571(毫秒). 执行号:0.
SQL> create or replace link dmlinkdm1 connect 'DAMENG' with udm1 identified by "Dameng@1234" using '172.16.1.1/6161';
操作已执行
已用时间: 3.380(毫秒). 执行号:503.
SQL> select count(*) from t1@dmlinkdm1;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.913(毫秒). 执行号:0.
SQL> select top 1 * from t1@dmlinkdm1;
第1 行附近出现错误[-9526]:DBLINK远程服务器版本不匹配.
已用时间: 1.032(毫秒). 执行号:0.
SQL>
SQL>
SQL>
SQL> create or replace link dmlinkdm2 connect 'DPI' with udm2 identified by "Dameng@1234" using '172.16.1.2:5236';
create or replace link dmlinkdm2 connect 'DPI' with udm2 identified by "Dameng@1234" using '172.16.1.2:5236';
第1 行附近出现错误[-2132]:无效的链接连接串.
已用时间: 0.260(毫秒). 执行号:0.
SQL>
SQL> create or replace link dmlinkdm1 connect 'DPI' with udm1 identified by "Dameng@1234" using '172.16.1.1:5236';
操作已执行
已用时间: 4.693(毫秒). 执行号:701.
SQL> select count(*) from t1@dmlinkdm1;
第1 行附近出现错误[-2256]:DBLINK远程服务器获取对象[T1]失败,错误详情[网络通讯失败].
已用时间: 5.018(毫秒). 执行号:0.
SQL> select top 1 * from t1@dmlinkdm1;
第1 行附近出现错误[-2256]:DBLINK远程服务器获取对象[T1]失败,错误详情[网络通讯失败].
已用时间: 2.698(毫秒). 执行号:0.
SQL>
SQL>
SQL>
SQL> create or replace link dmlinkdm2 connect 'ODBC' with udm2 identified by "Dameng@1234" using 'dm8';
操作已执行
已用时间: 20.107(毫秒). 执行号:1003.
SQL>
SQL>
SQL> select count(*) from t2@dmlinkdm2;
行号 COUNT(*)
---------- --------------------
1 1019
已用时间: 14.358(毫秒). 执行号:1004.
SQL>
SQL>
SQL> select top 1 * from t2@dmlinkdm2;
行号 OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID
---------- ------ ----------- -------------- --------- --------------
OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP
----------- -------------------------- ------------- ---------
STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME
------ --------- --------- --------- --------- ------------
1 CTISYS CTISYS NULL 150994948 NULL
SCH 2024-04-05 18:12:29.544126 NULL NULL
VALID N NULL NULL NULL NULL
已用时间: 4.763(毫秒). 执行号:1005.
SQL>
SQL>
SQL>
SQL> create or replace link dmlinkdm1 connect 'ODBC' with udm1 identified by "Dameng@1234" using 'dm8';
操作已执行
已用时间: 3.155(毫秒). 执行号:702.
SQL>
SQL>
SQL> select count(*) from t1@dmlinkdm1;
行号 DBLINK_EXP_TMPALIAS_1
---------- ---------------------
1 749
已用时间: 23.888(毫秒). 执行号:703.
SQL> select top 1 * from t1@dmlinkdm1;
行号 OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID
---------- ------ ----------- -------------- --------- --------------
OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP
----------- -------------------------- ------------- ---------
STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME
------ --------- --------- --------- --------- ------------
1 CTISYS CTISYS NULL 150994948 NULL
SCH 2024-04-05 21:54:06.403867 NULL NULL
VALID N NULL NULL NULL NULL
已用时间: 10.309(毫秒). 执行号:704.
SQL>
文章
阅读量
获赞