• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle 间隔分区

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

在oracle 11g之前,如果我们往一个没有匹配到满足分区的RANGE分区写记录的时候会报 ORA-14400: inserted partition key does not

在Oracle 11g之前,如果我们往一个没有匹配到满足分区的RANGE分区写记录的时候会报 ORA-14400: inserted partition key does not map to any partition,,因为这个原因我已经半夜起来过好几次。

如果oracle在更新记录或者新增记录的时候发现没有匹配的分区能自动分区该多好,在oracle11g中oracle实现了这个功能。

看个简单的例子。

etl@DWTEST19> create table part_01
2 (
3 col01 date
4 )
5 partition by range(col01)
6 (
7 partition p201001 values less than ( to_date(‘20100201′,’yyyymmdd’) ),
8 partition p201002 values less than ( to_date(‘20100301′,’yyyymmdd’) )
9 )
10 /

Table created.
etl@DWTEST19> insert into part_01 values( to_date(‘20100301′,’yyyymmdd’));
insert into part_01 values( to_date(‘20100301′,’yyyymmdd’))
*
ERROR at line 1:
ORA-14400: inserted partition key does not map to any partition

可以看出在没有分区满足的时候会报错。

下面看看oracle11g提供的间隔分区功能
etl@DWTEST>create table part_01
2 (
3 col01 date
4 )
5 partition by range(col01)
6 interval (numtoyminterval(1,’MONTH’))
7 (
8 partition p201001 values less than ( to_date(‘20100201′,’yyyymmdd’) )
9 )
10 /

Table created.

Elapsed: 00:00:00.08
etl@DWTEST>insert into part_01 values( to_date(‘20101001′,’yyyymmdd’) );

1 row created.

Elapsed: 00:00:00.07
etl@DWTEST>select partition_name,high_value
2 from user_tab_partitions
3 where table_name=’PART_01′;

PARTITION_NAME HIGH_VALUE
————— ————————————————–
P201001 TO_DATE(‘ 2010-02-01 00:00:00’, ‘SYYYY-MM-DD HH24:
MI:SS’, ‘NLS_CALENDAR=GREGORIAN’)

SYS_P36675 TO_DATE(‘ 2010-11-01 00:00:00’, ‘SYYYY-MM-DD HH24:
MI:SS’, ‘NLS_CALENDAR=GREGORIAN’)

Elapsed: 00:00:00.45
etl@DWTEST>insert into part_01 values( to_date(‘20100901′,’yyyymmdd’) );

1 row created.

Elapsed: 00:00:01.37
etl@DWTEST>select partition_name,high_来2源gaodaima#com搞(代@码&网value
2 from user_tab_partitions
3 where table_name=’PART_01′;

PARTITION_NAME HIGH_VALUE
————— ————————————————–
P201001 TO_DATE(‘ 2010-02-01 00:00:00’, ‘SYYYY-MM-DD HH24:
MI:SS’, ‘NLS_CALENDAR=GREGORIAN’)

SYS_P36675 TO_DATE(‘ 2010-11-01 00:00:00’, ‘SYYYY-MM-DD HH24:
MI:SS’, ‘NLS_CALENDAR=GREGORIAN’)

SYS_P36676 TO_DATE(‘ 2010-10-01 00:00:00’, ‘SYYYY-MM-DD HH24:
MI:SS’, ‘NLS_CALENDAR=GREGORIAN’)

Elapsed: 00:00:00.43

可以看出Oracle很好的为我们处理了加分区的操作。

但是,分区名,分区名怎么指定呢?


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle 间隔分区
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址