文档解释
ORA-14164: subpartition “string”: INITRANS value must be less than MAXTRANS value
Cause: Value of INITRANS was found to be greater than that of MAXTRANS for a subpartition whose name (explicitly specified by the user) is displayed in this message. Note that if INITRANS and/or MAXTRANS values for this subpartition were not specified explicitly, default values at partition-level would be used. If, in turn, default INITRANS and/or MAXTRANS values at partition-level were not specified, default values for the partitioned table or index would be used. If those values were also not specified explicitly, system defaults would be used.
Action: ensure that value of INITRANS (whether specified explicitly or derived from the default value at partition-level, table-level or index-level) is no greater than that of MAXTRANS
此Oracle错误通常指的是用户在构建子分区表之后,试图将INITRANS值(用于指定TDM段实例事务活动数量)设置为比MAXTRANS值(用于指定表空间中事务活动数量的最大值)大。
官方解释
本Oracle错误通过以下消息暗示: ORA-14164:子分区“string”:INITRANS值必须小于MAXTRANS值
此消息可能表明用户正在试图将INITRANS值设置为比MAXTRANS值大。 INITRANS值用于指定TDM段实例事务活动数量,而MAXTRANS值用于指定表空间中事务活动数量的最大值。值得注意的是,在Oracle中,您可以使用INITRANS值大于MAXTRANS值,但仅限于分区表。
常见案例
例如,以下代码引发了此错误:
CREATE TABLE employees (id NUMBER(4),name VARCHAR2(20),
salary NUMBER(ts))
PARTITION BY RANGE (salary)
(PARTITION p1 VALUES LESS THAN (1000)
SUBPARTITION subp1 (INITRANS 20 MAXTRANS 15));
正常处理方法及步骤
要解决此错误,请让INITRANS值小于或等于MAXTRANS值。 在上面的示例代码中,您可以通过更改INITRANS值来修复错误。
CREATE TABLE employees (id NUMBER(4),name VARCHAR2(20),
salary NUMBER(ts))
PARTITION BY RANGE (salary)
(PARTITION p1 VALUES LESS THAN (1000)
SUBPARTITION subp1 (INITRANS 15 MAXTRANS 15));