ORA-14307: partition contains too many list values

文档解释

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 分区

你可能感兴趣的