当前位置: 代码迷 >> Oracle管理 >> Oracle表分区——Range分区的有关问题
  详细解决方案

Oracle表分区——Range分区的有关问题

热度:117   发布时间:2016-04-24 04:15:04.0
Oracle表分区——Range分区的问题
网上说Range分区可以指定区间范围,如:
create table pdba (id number, time date) partition by range (time) (partition p1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),partition p2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')))
这只是指定了时间的上限,但能不能同时指定时间上下限的分区呢?
例如:现在有一条时间‘2010-08-02’的数据,如果按上面sql语句,oracle不会抛异常,数据会插到分区p1中,但实际情况是我想让oracle抛出‘ORA-14400: 插入的分区关键字未映射到任何分区’的异常,然后我再建一个时间范围为2010-08-01至2010-09-01的分区,该怎么办呢?


ps:暂时不考虑自动分区的情况
------解决方案--------------------
分区的区间是通过两个分区决定的.
不知道你的应用为什么会要你想的那种方式.
一般情况下分区都会根据逻辑先建好,你直接就先建一个小于2010-08-01和一个小于2010-09-01的不就行了.
------解决方案--------------------
引用:
网上说Range分区可以指定区间范围,如:
create table pdba (id number, time date) partition by range (time) (partition p1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),partition p2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')))
这只是指定了时间的上限,但能不能同时指定时间上下限的分区呢?
例如:现在有一条时间‘2010-08-02’的数据,如果按上面sql语句,oracle不会抛异常,数据会插到分区p1中,但实际情况是我想让oracle抛出‘ORA-14400: 插入的分区关键字未映射到任何分区’的异常,然后我再建一个时间范围为2010-08-01至2010-09-01的分区,该怎么办呢?


ps:暂时不考虑自动分区的情况

range无法设置下限,你说的那种情况不会报错。
不过你想让其报错,是不是可以设计list分区,可以增加表字段v_month,那样返回日期201009月份,如果不等,返回你的那个错误
  相关解决方案