我正在尝试将子分区添加到现有分区,但我收到此错误:
Oracle错误:ORA-14158
错误说明:子分区描述太多
错误原因:CREATE TABLE或CREATE INDEX包含太多子分区描述;最大子分区数为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 Table Statement:
**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 :(得分: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')
);
然后,Oracle将考虑31个分区以限制1048575子分区 - 尽管您的表只有两个分区。