达梦数据库使用IPV6连接

使用简单介绍

达梦数据库支持使用IPv6的地址访问数据库。

与使用IPv4相比,在连接时需要指定相应的格式:

(1)使用JDBC连接时,若使用ipv6地址,需要用[]指明是ipv6地址,即ipv6的地址需要包含在[]中。

例如:

  达梦管理工具使用IPV6地址,如ipv6地址为fe80::1a2d:8be9:91f6:6b51,那么主机名那里则为[fe80::1a2d:8be9:91f6:6b51]。

(2)disql工具使用ipv6地址连接时,本地测试在Linux上与在Windows上存在一点区别。

主要区别如下:

  Linux上使用disql采用ipv6地址访问,需要使用方括号[]将ipv6地址%disql机器的网络接口名整个包起来,如:ipv6地址为fe80::1a2d:8be9:91f6:6b51,ens33为disql机器对应的网络接口名称,则disql连接串host地址为[fe80::1a2d:8be9:91f6:6b51%ens33]。

  Windows上使用disql采用ipv6地址访问配置和JDBC使用ipv6访问一样,使用方括号[]将ipv6地址包起来即可。

具体可以参考《DM8程序员手册》《DM8 disql使用手册》等。

使用演示

检查IPv6是否启用

关于IPv6启用设置可以在网上搜索方法,网上很多。默认Centos 7启用了IPv6,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地址,则表示启用

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

方法:

假如Linux数据库服务器为A机,Linux客户端机器为B机,Windows客户端机器为C机

B机 telnet A机:telnet -6 A机ipv6地址%B机使用的网络接口名称 端口号 (Linux-Linux,网络接口名称比如ens32)

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

###关于IPv6这块详细的知识,可以查阅网上相关文章等,此处就简单说明一下

Linux数据库服务器的IPv6地址为fe80::1a2d:8be9:91f6:6b51 , IPv4地址为:192.168.15.71

(1)linux之间telnet测试

客户端机器地址:为fe80::89b7:a6c4:d5cc:d905

image-20211116221224674

telnet测试:

image-20211116221342400

telnet测试IPv6网络正常。

(2)Windows到Linux之间telnet测试

Windows客户机器地址:

以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::d5af:10cd:5f2e:4fda%11
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.100
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.0.1

以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::4c57:e965:991d:f036%18
   IPv4 地址 . . . . . . . . . . . . : 192.168.25.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 VMware Network Adapter VMnet8:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv6 地址 . . . . . . . . . . . . : fd15:4ba5:5a2b:1008:6170:2d1c:c51d:a1b3
   临时 IPv6 地址. . . . . . . . . . : fd15:4ba5:5a2b:1008:1b9:c6a1:c604:e634
   本地链接 IPv6 地址. . . . . . . . : fe80::6170:2d1c:c51d:a1b3%20                   ###ipv6%scopeid
   IPv4 地址 . . . . . . . . . . . . : 192.168.15.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::250:56ff:fec0:2222%20

本次环境数据库机器是VMware虚拟机,使用的NAT网络即VMnet8,所以采用VMnet8的IPv6地址后面的scopeid进行测试。如下:

image-20211116222935622

image-20211116223004372

测试ipv6地址网络正常。

使用disql进行连接测试

Linux客户机使用disql连接
(1)###ipv4
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@192.168.15.71:5236

服务器[192.168.15.71:5236]:处于普通打开状态
登录使用时间 : 31.898(ms)
disql V8
SQL> QUIT

(2)###ipv6
####disql连接串host不加网络接口名称,连接失败
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51]:5236
[-70028]:创建SOCKET连接失败.
disql V8
用户名:
密码:
[-70028]:创建SOCKET连接失败.
用户名:^C

####disql连接串host加上网络接口名称,连接正常
[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
SQL> select * from v$instance;

行号     NAME     INSTANCE_NAME INSTANCE_NUMBER HOST_NAME            
---------- -------- ------------- --------------- ---------------------
           SVR_VERSION                DB_VERSION          START_TIME          STATUS$ MODE$ 
           -------------------------- ------------------- ------------------- ------- ------
           OGUID       DSC_SEQNO   DSC_ROLE
           ----------- ----------- --------
1          DMSERVER DMSERVER      1               localhost.localdomain
           DM Database Server x64 V8  DB Version: 0x7000c 2021-10-28 11:36:28 OPEN    NORMAL
           0           0           NULL


已用时间: 32.412(毫秒). 执行号:1500.
SQL> 
Windows客户机使用disql连接
###ipv4 连接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@192.168.15.71:5236

服务器[192.168.15.71:5236]:处于普通打开状态
登录使用时间 : 15.842(ms)
disql V8
SQL> QUIT

###ipv6 
####disql连接串host不加scopeid,连接成功
E:\dmdbms270\bin>disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51]:5236

服务器[fe80::1a2d:8be9:91f6:6b51:5236]:处于普通打开状态
登录使用时间 : 17.334(ms)
disql V8
SQL> QUIT
####disql连接串host加scopeid,也可连接成功
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
SQL> quit

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

Linux客户机使用DM管理工具进行连接

image-20211116225444775

image-20211116225531124

可以发现使用JDBC连接时(DM管理工具使用的是JDBC连接),连接地址那里加或者不加网络接口名称都能连接成功。

Windows客户机使用DM管理工具进行连接

image-20211116230030868

image-20211116230106143

通过测试发现,同Linux上使用DM管理工具的情况。Windows上加不加对应网卡的scopeid,都可以成功连接到数据库。

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

Linux客户端机器上dm_svc.conf文件配置内容如下:

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

Windows客户端机器上dm_svc.conf文件配置内容如下:

TIME_ZONE=(480)
LANGUAGE=(cn)
IPV6=([fe80::1a2d:8be9:91f6:6b51]:5236)
IPV6_2=([fe80::1a2d:8be9:91f6:6b51%20]:5236)
disql测试服务名方式

Linux客户机:

image-20211116232319566

Windows客户机:

image-20211116233012847

DM管理工具测试

LInux客户端机器:

image-20211116233110106

image-20211116233149267

Windows客户端机器:

image-20211116234209104

image-20211116234227543

简单的 JAVA 代码测试

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

image-20211116233937668

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

image-20211116234104746

总结

1、使用JDBC通过IPv6地址进行访问时,只需要在连接串中将IPv6地址使用方括号[] 括起来即可。

2、Linux机器上使用disql工具采用IPv6地址进行连接时,需要加上%disql客户机对应的网络接口名称(同telnet),如**./disql SYSDBA/SYSDBA@[fe80::1a2d:8be9:91f6:6b51%ens33]:5236**,而Windows机器只需要使用方括号[]将IPv6地址括起来即可。

更多资讯请上达梦技术社区了解:https://eco.dameng.com

在Oracle中配置IPv6并通过IPv6连接数据库的步骤如下: 1. 确保操作系统已经正确配置了IPv6网络,并且可以通过IPv6地址访问到数据库服务器。 2. 在Oracle数据库服务器上,打开SQL*Net配置文件`listener.ora`,该文件位于`$ORACLE_HOME/network/admin`目录下。 3. 在`listener.ora`文件中,找到`LISTENER`部分,并添加以下配置行: ``` (ADDRESS = (PROTOCOL = TCP)(HOST = ::1)(PORT = 1521)) ``` 这里的`::1`是IPv6的本地回环地址,`1521`是Oracle数据库默认的监听端口。 4. 保存并关闭`listener.ora`文件。 5. 重启Oracle监听器,以使配置生效。可以使用以下命令重启监听器: ```shell lsnrctl stop lsnrctl start ``` 6. 确保客户端机器上已经正确配置了IPv6网络,并且可以通过IPv6地址访问到数据库服务器。 7. 在客户端机器上,使用IPv6地址连接到Oracle数据库连接字符的格式为: ``` <username>/<password>@//[<ipv6_address>][:<port>]/<service_name> ``` 其中,`<ipv6_address>`是数据库服务器的IPv6地址,`<port>`是监听器的端口号(默认为1521),`<service_name>`是要连接数据库服务名。 例如,如果数据库服务器的IPv6地址是`2001:db8:1234:5678::1`,监听器端口号是默认的1521,要连接数据库服务名是`ORCL`,则连接字符为: ``` username/password@//[2001:db8:1234:5678::1]:1521/ORCL ``` 使用相应的数据库客户端工具(如SQL*Plus、SQL Developer等)连接数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值