加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

暗示Oracle中的IPv4 / IPv6地点

发布时间:2021-05-22 20:09:03 所属栏目:站长百科 来源:网络整理
导读:在Oracle中,代表收集地点的恰当数据范例或技能是什么,哪些地点也许是IPv4或IPv6? 配景:我正在转换表记录收集勾当,行使PostgreSQL inet data type构建,以在统一个表中生涯v4和v6地点. 可是,没有行包括v4和v6地点. (也就是说,记录来自呆板的v4仓库或呆板的v6

在Oracle中,代表收集地点的恰当数据范例或技能是什么,哪些地点也许是IPv4或IPv6?

配景:我正在转换表记录收集勾当,行使PostgreSQL inet data type构建,以在统一个表中生涯v4和v6地点.

可是,没有行包括v4和v6地点. (也就是说,记录来自呆板的v4仓库或呆板的v6仓库.)

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

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读