创建list-range的分区表的代码如下:
create table uu
(USER_ID NUMBER(10), TXN_DATE DATE) TABLESPACE FLOW
PARTITION BY LIST(USER_ID)
SUBPARTITION BY RANGE(TXN_DATE)
(
PARTITION UUP0 VALUES (0)
(
SUBPARTITION UUPOS20000101 VALUES LESS THAN (TO_DATE('2000-01-01','yyyy-mm-dd'))
)
);
我用代码 ALTER TABLE uu MODIFY PARTITION UUP0 ADD SUBPARTITION UUP0S201091 VALUES LESS THAN (TO_DATE('2010-9-1', 'yyyy-mm-dd')) TABLESPACE flow 可以成功的在分区UUP0下添加子分区。我用代码ALTER TABLE uu ADD PARTITION UUP6 VALUES (6) TABLESPACE flow能够成功的添加分区UUP6,但用代码ALTER TABLE uu MODIFY PARTITION UUP6 ADD SUBPARTITION UUP6S201091 VALUES LESS THAN (TO_DATE('2010-9-1', 'yyyy-mm-dd')) TABLESPACE flow在分区UUP6下添加子分区时出现奇怪的现象:(1) 有出错提示,在pl/sql下的错误提示是ORA-14049: 无效的 ALTER TABLE MODIFY PARTITION 选项,在sql*plus下的错误提示是ORA-14211: 子分区界限必须调整为高于最后一个子分区界限。(2) 虽然有错误提示,但在分区UUP6下已经添加了一个分区,但其分区名并不是我指定的子分区名字。继续用代码ALTER TABLE uu MODIFY PARTITION UUP6 ADD SUBPARTITION UUP6S201098 VALUES LESS THAN (TO_DATE('2010-9-8', 'yyyy-mm-dd')) TABLESPACE flow在分区UUP6添加子分区,错误提示是ORA-14211: 子分区界限必须调整为高于最后一个子分区界限,而且在分区UUP6下也没有添加子分区。
有哪位大哥能够帮我解决一下,非常感谢
create table uu
(USER_ID NUMBER(10), TXN_DATE DATE) TABLESPACE FLOW
PARTITION BY LIST(USER_ID)
SUBPARTITION BY RANGE(TXN_DATE)
(
PARTITION UUP0 VALUES (0)
(
SUBPARTITION UUPOS20000101 VALUES LESS THAN (TO_DATE('2000-01-01','yyyy-mm-dd'))
)
);
我用代码 ALTER TABLE uu MODIFY PARTITION UUP0 ADD SUBPARTITION UUP0S201091 VALUES LESS THAN (TO_DATE('2010-9-1', 'yyyy-mm-dd')) TABLESPACE flow 可以成功的在分区UUP0下添加子分区。我用代码ALTER TABLE uu ADD PARTITION UUP6 VALUES (6) TABLESPACE flow能够成功的添加分区UUP6,但用代码ALTER TABLE uu MODIFY PARTITION UUP6 ADD SUBPARTITION UUP6S201091 VALUES LESS THAN (TO_DATE('2010-9-1', 'yyyy-mm-dd')) TABLESPACE flow在分区UUP6下添加子分区时出现奇怪的现象:(1) 有出错提示,在pl/sql下的错误提示是ORA-14049: 无效的 ALTER TABLE MODIFY PARTITION 选项,在sql*plus下的错误提示是ORA-14211: 子分区界限必须调整为高于最后一个子分区界限。(2) 虽然有错误提示,但在分区UUP6下已经添加了一个分区,但其分区名并不是我指定的子分区名字。继续用代码ALTER TABLE uu MODIFY PARTITION UUP6 ADD SUBPARTITION UUP6S201098 VALUES LESS THAN (TO_DATE('2010-9-8', 'yyyy-mm-dd')) TABLESPACE flow在分区UUP6添加子分区,错误提示是ORA-14211: 子分区界限必须调整为高于最后一个子分区界限,而且在分区UUP6下也没有添加子分区。
有哪位大哥能够帮我解决一下,非常感谢
SELECT dbms_metadata.get_ddl('TABLE','UU') FROM dual;
--------------------------------------------------------------------------------
CREATE TABLE "CTOS"."UU"
( "USER_ID" NUMBER(10,0),
"TXN_DATE" DATE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "DBODATA"
PARTITION BY LIST ("USER_ID")
SUBPARTITION BY RANGE ("TXN_DATE")
(PARTITION "UUP0" VALUES (0)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "DBODATA"
( SUBPARTITION "UUPOS20000101" VALUES LESS THAN (TO_DATE(' 2000-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLESPACE "DBODATA" NOCOMPRESS ,
SUBPARTITION "UUP0S201091" VALUES LESS THAN (TO_DATE(' 2010-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLESPACE "DBODATA" NOCOMPRESS ) ,
PARTITION "UUP6" VALUES (6)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT)
TABLESPACE "DBODATA"
( SUBPARTITION "SYS_SUBP81" VALUES LESS THAN (MAXVALUE)
TABLESPACE "DBODATA" NOCOMPRESS ) ) 你创建UUP6分区的时候,没有明确定义子分区,所以Oracle默认创建一个MAXVALUE子分区,这种子分区结构不能增加,只能分割