INTERVAL分区是Oracle11g新增的特性,这种范围分区不需要定义MAXVALUE,Oracle会根据分区定义的INTERVAL来动态的分配新分区来容纳超过范围的数据。 Oracle在分配新分区的时候只会给存在数据的分区进行分配,对于不存在数据的分区并不会马上分配,而是在需要的时候才去分配。 对于这个分区分配策略,是在无意中发现的:
SQL> CREATE TABLE T_INTERVAL_PART
2 PARTITION BY RANGE (CREATED)
3 INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
4 (PARTITION P1 VALUES LESS THAN (TO_DATE('2007-9-1', 'YYYY-MM-DD')))
5 AS SELECT * FROM DBA_OBJECTS;
表已创建。
SQL> SELECT TABLE_NAME, PARTITION_NAME, HIGH_VALUE FROM USER_TAB_PARTITIONS
2 WHERE TABLE_NAME = 'T_INTERVAL_PART'
3 ORDER BY 2;
TABLE_NAME PARTITION_NAME HIGH_VALUE