我试图将子分区添加到现有分区中,但我得到了以下错误:
甲骨文错误: ORA-14158 错误描述:太多的子分区描述 错误原因:创建表或创建包含太多子分区描述的索引;子分区的最大数目为1048575。 操作:将子分区的数量减少到不超过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语句:
**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)
)**
如果有人有什么建议,请告诉我。
发布于 2017-03-16 00:50:13
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')
);
然后,Oracle将考虑31个分区,限制为1048575个子分区--尽管您的表只有两个分区。
https://stackoverflow.com/questions/42826459
复制