日期:2014-05-16 浏览次数:20543 次
上篇博客《oracle分区》中讲了oracle的几种分区,并且对于oracle的典型分区如Range分区和List分区给了示例。
在实际运用Range分区时,遇到了这样的难题:
createtableTMP_LXQ_1
(
PROPOSALNO VARCHAR2(22),
STARTDATE DATE
)
partitionbyrange(STARTDATE) (
partitionpart_t01values less than(to_date('2008-01-01','yyyy-mm-dd')) ,
partitionpart_t02values less than(to_date('2009-01-01','yyyy-mm-dd')) ,
partitionpart_t03values less than(to_date('2010-01-01','yyyy-mm-dd')) ,
partitionpart_t04values less than(to_date('2011-01-01','yyyy-mm-dd')) ,
partitionpart_t05values less than(to_date('2012-01-01','yyyy-mm-dd')) ,
partitionpart_t06values less than(to_date('2013-01-01','yyyy-mm-dd')) ,
partitionpart_t07values less than(maxvalue)
);
本例中的时间只是到了2013年,然后2013年之后的时间完全放入到了maxvalue中,这确实也是一种解决办法,即有除去2008-2013年的数据时,数据库不会报错。但是这样就改变了我们分区的初衷,分区是想让各个部分的数据均衡,以加快查询。
在oracle11g出现之前,实际工作中经常会遇到这种情况,而处理这种情况,通常是由DBA或者开发人员手动进行分区或者直接定义maxvalue。
Ora