网上说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无法设置下限,你说的那种情况不会报错。
不过你想让其报错,是不是可以设计list分区,可以增加表字段v_month,那样返回日期201009月份,如果不等,返回你的那个错误