我有一个要求,我需要每天创建一个表的分区,因为oracle 11g中的负载非常高。 我查了很多博客,我发现我们可以使用' NUMTODSINTERVAL'函数,但我有一个挑战,如在表中没有日期列,我需要在数字列上创建分区,其行为类似于表中的日期。
cobdate
---------
20141205
我想要实现如下:
partition by range(cobdate)
interval(1)
但是它会在几天之后产生问题,因为它会在下一个月到达时创建新分区,之后所有数据都将转到某个sys定义分区。
我们可以将number
转换为date
并在具有NUMTODSINTERVAL
功能的分区列中使用它吗?目前我认为这是一个解决方案..?请建议
答案 0 :(得分:0)
我最后总结了一个与这个问题相关的答案,我在下面实现了它:
CREATE TABLE TEST_PART
(
COBDATE NUMBER(9)
)
PARTITION BY RANGE (COBDATE)
SUBPARTITION BY RANGE (COBDATE)
(
PARTITION P_2014 VALUES LESS THAN (20150101)
( SUBPARTITION P_2014_JAN_01 VALUES LESS THAN (20140102) TABLESPACE TBS_NAME,
SUBPARTITION P_2014_JAN_02 VALUES LESS THAN (20140103) TABLESPACE TBS_NAME,
.
.
.
SUBPARTITION P_2014_DEC_31 VALUES LESS THAN (20150101) TABLESPACE TBS_NAME)
)
NOCACHE
PARALLEL
MONITORING;
我已经在UNIX shell脚本中自动化了它,它将自动创建分区后记录(年份:2015,2016 ..)。 快乐学习:)