注册
相同版本DM数据库间的dblink使用简介
技术分享/ 文章详情 /

相同版本DM数据库间的dblink使用简介

干饭王 2024/04/10 1181 0 0

1、背景介绍

达梦数据库之间存在跨库访问的需求,例如有2个DM数据库DM1、DM2,现在本地库DM1要访问远程库DM2中的数据,此时可使用dblink来实现。本文将介绍3种实现方法dmmal,DPI,ODBC。

2、环境介绍

2.1、规划情况

角色 发起端(本地端) 目标端(远程端)
数据库版本 8.1.3.100 8.1.3.100
数据库名 DM1 DM2
实例名 DM1SVR DM2SVR
字符集 GB18030 GB18030
IP 172.16.1.1 172.16.1.2
数据库端口 5236 5236
MAL端口号 61611 61612
用户 无 um2
表 无 tm2

2.2、创建数据库、配置dm.ini、配置dmmal.ini配置

2.2.1、创建数据库

DM1执行

--dmdba
cd /home/dmdba100/dmdbms/bin/
./dminit path=/home/dmdba100/dmdbms/data DB_NAME=DM1 INSTANCE_NAME=DM1SVR CHARSET=0 PORT_NUM=5236

--root
/home/dmdba100/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DM1SVR -dm_ini /home/dmdba100/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

2.2.2、dm.ini和dmmal.ini配置

DM1和DM2的dm.ini配置

vi /home/dmdba100/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/dmdba100/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

2.2.3、重启生效

cd /home/dmdba100/dmdbms/bin/
./DmServiceDM1SVR restart

cd /home/dmdba100/dmdbms/bin/
./DmServiceDM2SVR restart

2.2.4、检查dmal配置生效情况

[dmdba100@db1 bin]$ ss -lntp |grep dmserver
LISTEN    0         128                      *:6161                   *:*        users:(("dmserver",pid=18473,fd=10))                                           
LISTEN    0         128                      *:5236                   *:*        users:(("dmserver",pid=18473,fd=5))                                            
[dmdba100@db1 bin]$ 

[dmdba100@db2 bin]$ ss -lntp |grep dmserver
LISTEN    0         128                      *:6162                   *:*        users:(("dmserver",pid=12479,fd=10))                                           
LISTEN    0         128                      *:5236                   *:*        users:(("dmserver",pid=12479,fd=5))                                            
[dmdba100@db2 bin]$ 

2.2.5、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;
select top 1 * from udm2.t2;操作已执行
已用时间: 39.658(毫秒). 执行号:802.
SQL> 

行号     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> 

3、dmal方法创建dblink

3.1、3个种创建的语法

---通过实例名(MAL_INST_NAME=DM2SVR)
create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using 'DM2SVR';
--通过dmmal.ini中的MAL_HOST/MAL_PORT
create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using '172.16.1.2/5236';
--通过dmmal.ini中的MAL_INST_PORT/MAL_INST_HOST
create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using '172.16.1.2/6162';

3.2、创建并验证dblink

通过实例名(MAL_INST_NAME=DM2SVR)


SQL> create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using 'DM2SVR';
操作已执行
已用时间: 5.288(毫秒). 执行号:601.
SQL> select count(*) from t2@dmlinkdm2;
行号     DBLINK_EXP_TMPALIAS_1
---------- ---------------------
1          1019

已用时间: 18.780(毫秒). 执行号:602.
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


已用时间: 2.675(毫秒). 执行号:603.
SQL> 

通过dmmal.ini中的MAL_HOST/MAL_PORT

SQL> create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using '172.16.1.2/5236';
操作已执行
已用时间: 5.275(毫秒). 执行号:604.
SQL> select count(*)  from t2@dmlinkdm2;
行号     DBLINK_EXP_TMPALIAS_1
---------- ---------------------
1          1019

已用时间: 20.070(毫秒). 执行号:605.
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


已用时间: 3.395(毫秒). 执行号:606.
SQL> 
SQL> 

通过dmmal.ini中的MAL_INST_PORT/MAL_INST_HOST

SQL> 
SQL> create or replace link dmlinkdm2 connect 'DAMENG' with udm2 identified by "Dameng@1234" using '172.16.1.2/6162';
操作已执行
已用时间: 5.022(毫秒). 执行号:607.
SQL> select count(*)  from t2@dmlinkdm2;
行号     DBLINK_EXP_TMPALIAS_1
---------- ---------------------
1          1019

已用时间: 18.406(毫秒). 执行号:608.
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


已用时间: 2.569(毫秒). 执行号:609.
SQL> 
SQL> 
SQL> 

4、DPI方法创建dblink

4.1、创建语法

create or replace link dmlinkdm2 connect 'DPI' with udm2 identified by "Dameng@1234" using '172.16.1.2:5236';

4.2、创建并验证dblink

SQL> create or replace link dmlinkdm2 connect 'DPI' with udm2 identified by "Dameng@1234" using '172.16.1.2:5236';
操作已执行
已用时间: 4.609(毫秒). 执行号:611.
SQL> select count(*)  from t2@dmlinkdm2;

行号     DBLINK_EXP_TMPALIAS_1
---------- ---------------------
1          1019

已用时间: 10.041(毫秒). 执行号:612.
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


已用时间: 7.559(毫秒). 执行号:613.
SQL>

5、ODBC方法创建dblink

5.1、yum方式安装unixODBC

[root@db1 ~]# yum -y install unixODBC
Last metadata expiration check: 0:02:42 ago on 2024年04月05日 星期五 18时52分53秒.
Dependencies resolved.
=============================================================================
 Package         Architecture  Version              Repository          Size
=============================================================================
Installing:
 unixODBC        x86_64        2.3.7-2.ky10         ks10-adv-os        401 k

Transaction Summary
=============================================================================
Install  1 Package

Total download size: 401 k
Installed size: 1.3 M
Downloading Packages:
unixODBC-2.3.7-2.ky10.x86_64.rpm             1.3 MB/s | 401 kB     00:00    
-----------------------------------------------------------------------------
Total                                        1.3 MB/s | 401 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                     1/1 
  Installing       : unixODBC-2.3.7-2.ky10.x86_64                        1/1 
  Running scriptlet: unixODBC-2.3.7-2.ky10.x86_64                        1/1 
  Verifying        : unixODBC-2.3.7-2.ky10.x86_64                        1/1 

Installed:
  unixODBC-2.3.7-2.ky10.x86_64                                               

Complete!
[root@db1 ~]# 

5.2、配置odbcinst.ini和odbc.ini

[root@db1 ~]# cat /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description=ODBC DRIVER FOR DM8
DRIVER=/home/dmdba100/dmdbms/bin/libdodbc.so
[root@db1 ~]# 

[root@db1 ~]# cat /etc/odbc.ini

[dm8]
Description=DM ODBC DSND
Driver= DM8 ODBC DRIVER
SERVER=172.16.1.2
UID=udm2
PWD=Dameng@1234
TCP_PORT=5236
[root@db1 ~]#

5.3、验证odbc配置

[root@db1 bin]# isql -v dm8                  
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

5.4、创建odbc的dblink语法

SQL> 
SQL> create or replace link dmlinkdm2 connect 'ODBC' with udm2 identified by "Dameng@1234" using 'dm8';
操作已执行
已用时间: 5.105(毫秒). 执行号:901.
SQL> select count(*)  from t2@dmlinkdm2;

行号     DBLINK_EXP_TMPALIAS_1
---------- ---------------------
1          1019

已用时间: 35.169(毫秒). 执行号:902.
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


已用时间: 11.932(毫秒). 执行号:903.
SQL> 
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服