2017-03-16 69 views
0

我试图子分区添加到现有的分区,但我收到此错误:如果我尝试一个子分区添加到如何修改分区以将多个子分区添加到此现有分区?

Oracle Error: ORA-14158

Error Description: Too many subpartition descriptions

Error Cause: CREATE TABLE or CREATE INDEX contained too many subpartition descriptions; maximum number of subpartitions is 1048575.

Action: Reduce number of subpartitions to not exceed 1024K-1.

现有它的工作原理与此查询:

ALTER TABLE table_name MODIFY PARTITION partition_name ADD 
SUBPARTITION subpartition_name VALUES LESS THAN (TO_DATE('01-03-2018' , 'DD-MM-YYYY')); 

但如果我尝试到多个子分区添加到这个现有的分区它给上面提到的错误:

这里是它的查询:

ALTER TABLE table_name MODIFY PARTITION partition_name ADD 
SUBPARTITION subpartition_name1 VALUES LESS THAN (TO_DATE('01-03-2018' , 'DD-MM-YYYY')), 
SUBPARTITION subpartition_name2 VALUES LESS THAN (TO_DATE('01-04-2018' , 'DD-MM-YYYY')); 

尽管我没有创建超过1024K-1的子分区,但我仍然得到了太多的子分区描述错误。

这里是CREATE TABLE语句:

   **CREATE TABLE HTL_ALLOTMENT_TRACE ( 

        allotmentTraceID  NUMBER(19)   NOT NULL, 

        organizationID  NUMBER(19)   NOT NULL, 

        locationID   NUMBER(10)   NOT NULL, 

        traceBusinessDate  DATE     NOT NULL       
       ) 

        PARTITION BY LIST (organizationID) 

        SUBPARTITION BY RANGE (traceBusinessDate) 

         (
         PARTITION HALMTTRC_1 VALUES (1)   
        )** 

如果任何人有什么建议,请让我知道。

+0

请提供您的CREATE TABLE语句。 –

+0

CREATE TABLE HTL_ALLOTMENT_TRACE( allotmentTraceID NUMBER(19)NOT NULL, organizationID NUMBER(19)NOT NULL, locationID NUMBER(10)NOT NULL, traceBusinessDate DATE NOT NULL \t \t ) \t \t \t \t \t \t PARTITION BY LIST(organizationID) \t \t \t \t \t \t SUBPARTITION BY RANGE(traceBusinessDate) \t \t \t \t \t \t( \t \t \t \t \t \t PARTITION HALMTTRC_1 VALUES(1) \t \t \t \t \t \t) –

+0

请编辑您的问题,而不是把它变成注释 - 这是相当困难的阅读。 –

回答

0

1024K-1分区(或子分区)的限制不适用于表中的实际分区数。 Oracle考虑所有可能分区的全部范围。

例如,如果你有一台这样的

CREATE TABLE MY_TABLE 
(
    END_TIME TIMESTAMP 
) 
PARTITION BY RANGE (END_TIME) 
INTERVAL (INTERVAL '1' DAY) 
(
    PARTITION P_1 VALUES LESS THAN (TIMESTAMP '2017-03-01 00:00:00'), 
    PARTITION P_2 VALUES LESS THAN (TIMESTAMP '2017-04-01 00:00:00') 
); 

那么甲骨文将考虑为1048575子分区限制31个分区 - 虽然你的表只有两个分区。

+0

我只是在修改分区时遇到这个问题。如果我用子分区创建一个新的分区5年,那么它工作正常。不知道问题来自哪里。 –