ORA-14307: partition contains too many list values
Cause: Partition list contains more than 524288 list values
Action: Reduce the number of values to not exceed 524288 values
Ora-14307 错误是在将表或索引分区时遇到的,当用户试图将列表分区或子分区中包含的值数目超过 1000 时,就会碰到这个错误。
本错误是由于使用列表分区,而列表值的个数超过 1000 导致的。如果您制定了一个过多值(>1000)的列表,Oracle 就会回显此错误:
ORA-14307: partition contains too many list values
比如,我们试图使用列表partition分区一张表,而一个列表分区最多只能包括1000个值:
create table test_list_too_many_values
(
col1 date,
col2 varchar(20)
)
partition by list (col1)
(
partition p1 values in(date ‘2010-01-01’,
date ‘2010-01-02’,
date ‘2010-01-03’
…
…
),
……
);
在上述代码中,我们列举了1010个日期值,这样就导致报错:ORA-14307: partition contains too many list values
解决:
1.去掉一些不必要的值,使得每个列表分区的值不超过1000。
2.如果不能去掉,则可以采用 Range Partition,把数据分成多段,每段包括的值数即不会超过1000个
3.可以使用Hash Partition(分段哈希分区),但hash分区无法平均把记录分布在各个子分区中。
4.用更高级的分区技术,INTERVAL 和INTERVAL-REFERENCE 分区