注册
使用IPV6连接DM数据库
技术分享/ 文章详情 /

使用IPV6连接DM数据库

DM_sms 2022/03/10 2560 0 0

一、概述

达梦数据库支持使用 IPv6 的地址访问数据库。与使用 IPv4 相比,在连接时需要指定相应的格式:

  1. 使用 JDBC 连接时,若使用 Ipv6 地址,需要用 [] 指明是 ipv6 地址。
    例如:达梦管理工具使用 IPV6 地址 fe80::1a2d:8be9:91f6:6b51,那么主机名那里则为 [fe80::1a2d:8be9:91f6:6b51]。
  2. disql 工具使用 Ipv6 地址连接时,本地测试在 Linux 上与在 Windows 上的主要区别如下:
    (1)Linux 上使用 disql 采用 ipv6 地址访问,格式为 [Ipv6地址 % disql对应的网络接口名称]。如:ipv6 地址为fe80::1a2d:8be9:91f6:6b51,ens33 为 disql 机器对应的网络接口名称,则 disql 连接串 host 地址为[fe80::1a2d:8be9:91f6:6b51%ens33]。
    (2)Windows 上使用 disql 采用 ipv6 地址访问配置和 JDBC 使用 ipv6 访问一样,使用方括号 [] 指明 ipv6 地址即可。
    可参考《DM 程序员手册》和《DM disql使用手册》等,手册位于数据库安装路径 /dmdbms/doc 文件夹。
    以下提供方法演示:

二、初始检查

2.1 检查Ipv6 是否使用

Centos 7 和 Windows(win10 win11)均默认启用了 IPv6。简单查看系统是否启用IPv6:

---Linux7:
[root@localhost ~]# sysctl -a|grep ipv6|grep disable
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.ens32.disable_ipv6 = 0
---上面为 0,则表示未禁用 ipv6(默认)

[root@localhost ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.71  netmask 255.255.255.0  broadcast 192.168.15.255
        inet6 fe80::1a2d:8be9:91f6:6b51  prefixlen 64  scopeid 0x20<link>
        inet6 fd15:4ba5:5a2b:1008:9ef5:bef9:de64:c30a  prefixlen 64  scopeid 0x0<global>
        ether 00:0c:29:89:30:0d  txqueuelen 1000  (Ethernet)
        RX packets 796502  bytes 872721471 (832.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1028073  bytes 2448756974 (2.2 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
---上面 inet6 表示启用了 ipv6

---Windows:
ipconfig [-all] 
---可以看到显示 IPv6 地址,则表示启用

2.2 测试机器之间 IPv6 地址是否能正常通信

假如有如下三个机器环境:

服务器类型 机器名
Linux 数据库服务器 A 机器
Linux 客户端机器 B 机器
Windows 客户端机器 C 机器
  • B 机 telnet A 机(即Linux-Linux,网络接口名称比如 ens32),测试格式为:telnet -6 A机ipv6 地址%B 机使用的网络接口名称 端口号。
  • 例如:Linux 数据库服务器的 IPv6 地址为 fe80::1a2d:8be9:91f6:6b51,IPv4 地址为:192.168.15.71。客户端机器地址:为fe80::89b7:a6c4:d5cc:d905,测试结果如下图表示测试结果正常:

image.png

image.png

  • C 机 telnet A 机(即 Windows-Linux,scopeid 为 Windows IPv6 地址那里显示的”ipv6 地址 %scopeid”中的 scopeid):telnet A机ipv6 地址%C机对应地址的scopeid 端口号。

三、使用 disql 进行连接测试

3.1 Linux 客户机使用 disql 连接

---使用 ipv4 连接测试成功
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@192.168.15.71:5236
服务器[192.168.15.71:5236]:处于普通打开状态
登录使用时间 : 31.898(ms)
disql V8

---使用IPV6,且连接串 host 不加网络接口名称情形下,disql 连接失败
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51]:5236
[-70028]:创建SOCKET连接失败.
disql V8
用户名:
密码:
[-70028]:创建SOCKET连接失败.

---使用IPV6,且连接串 host 加上网络接口名称情形下,disql 连接正常
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51%ens33]:5236
服务器[fe80::1a2d:8be9:91f6:6b51%ens33:5236]:处于普通打开状态
登录使用时间 : 5.810(ms)
disql V8

3.2 Windows 客户机使用 disql 连接

---使用 Ipv4 连接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@192.168.15.71:5236
服务器[192.168.15.71:5236]:处于普通打开状态
登录使用时间 : 15.842(ms)
disql V8

---使用IPV6,且连接串 host 不加 scopeid 情形下,disql 连接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51]:5236
服务器[fe80::1a2d:8be9:91f6:6b51:5236]:处于普通打开状态
登录使用时间 : 17.334(ms)
disql V8

---使用 IPV6,且连接串 host 加上 scopeid 情形下,disql 也可连接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51%20]:5236
服务器[fe80::1a2d:8be9:91f6:6b51%20:5236]:处于普通打开状态
登录使用时间 : 3.872(ms)
disql V8

四、使用 DM 管理工具进行连接测试

Linux 客户机和 Windows 客户机使用 DM 管理工具进行连接方法相同,如下图所示:

image.png

image.png

五、使用 dm_svc.conf 中服务名方式连接测试

dm_svc.conf 文件配置内容如下:

TIME_ZONE=(480)
LANGUAGE=(cn)
IPV6=([fe80::1a2d:8be9:91f6:6b51]:5236)
IPV6_2=([fe80::1a2d:8be9:91f6:6b51%ens33]:5236)

5.1 disql 服务名方式连接测试

5.1.1 Linux 环境下

image.png

5.1.2 Windows 环境下

image.png

5.2 DM 管理工具方式连接测试

利用 IPV6 和 IPV6_2 服务名均可连接成功。

image.png

六、简单的 JAVA 代码测试

6.1 直接使用 IPv6 地址连接,操作数据库成功

image.png

6.2 使用 dm_svc.conf 中的服务名连接,操作数据库正常

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服