每天在oracle中使用列数据类型编号的分区

时间:2014-12-09 13:42:42

标签: oracle oracle11g database-administration

我有一个要求,我需要每天创建一个表的分区,因为oracle 11g中的负载非常高。     我查了很多博客,我发现我们可以使用' NUMTODSINTERVAL'函数,但我有一个挑战,如在表中没有日期列,我需要在数字列上创建分区,其行为类似于表中的日期。

cobdate
---------
20141205

我想要实现如下:

partition by range(cobdate)
interval(1) 

但是它会在几天之后产生问题,因为它会在下一个月到达时创建新分区,之后所有数据都将转到某个sys定义分区。

我们可以将number转换为date并在具有NUMTODSINTERVAL功能的分区列中使用它吗?目前我认为这是一个解决方案..?请建议

1 个答案:

答案 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 ..)。 快乐学习:)