oracle数据库ipv6配置方法,表示Oracle中的IPv4 / IPv6地址

In Oracle, what is the appropriate

data type or technique for

representing network addresses, which

addresses may be IPv4 or IPv6

有两种方法:

>仅存储.

>存储常规表示

仅用于存储.一个IPV4地址应该是一个整数(32位就够了).对于IP V6,128位,INTEGER(类似于Number(38))将会做.当然,这是存储.该方法认为表示是应用程序的一个问题.

如果采取相反的策略,存储常规表示,则需要确保IP V4和IPV6地址只有一个常规(字符串)表示.它以ipV4而闻名.至于IPV6,还有一种标准格式.

我的偏好是第一个策略.在最坏的情况下,您可以采用混合方法(非酸),并将二进制和ascii表示并排存储为二进制值.

No row contains both v4 and v6

addresses, however.

IPV6格式的IPV4地址的标准表示为::: ffff:192.0.2.128.

我不知道上下文,但是我会保留2列,一个用于IPV4,另一个用于不同的ipV6地址.

更新

在@ sleepyMonad的一个很好的评论之后,我想指出,而不是Number数据类型,最好使用INTEGER数据类型,这将很乐意适应可能用128位整数’ ff … ff'(需要39位十进制数字). 38是从0到9的最大功率,范围从0到9,可以用128位编码,但仍然可以插入2 ** 128 – 1(十进制340282366920938463463374607431768211455)的最大无符号值.这是一个小的测试来说明这种可能性.

create table test (

id integer primary key,

ipv6_address_bin INTEGER );

-- Let's enter 2**128 - 1 in the nueric field

insert into test (id, ipv6_address_bin) values ( 1, to_number ( 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') ) ;

-- retrieve it to make sure it's not "truncated".

select to_char ( ipv6_address_bin, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' ) from test where id = 1 ;

-- yields 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'

select to_char ( ipv6_address_bin ) from test where id = 1 ;

-- yields 340282366920938463463374607431768211455

select LOG(2, ipv6_address_bin) from test where id = 1 ;

-- yields 128

select LOG(10, ipv6_address_bin) from test where id = 1 ;

-- yields > 38

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值