在oracle表中列出分区

时间:2014-07-08 05:49:06

标签: oracle

我创建了一个带默认分区的表,现在我正在添加另一个分区/子分区,然后我得到oracle错误

CREATE TABLE STR_MAINFRAME_DB
( 
    CATEGORY         VARCHAR(100) NOT NULL,
    SUBCATEGORY         VARCHAR(100) NOT NULL
)
PARTITION BY LIST (CATEGORY)
SUBPARTITION BY LIST (SUBCATEGORY)
(
    PARTITION P_DUMMY VALUES (DEFAULT)
    (
        SUBPARTITION S_P_DUMMY VALUES (DEFAULT)  
    ));

我使用下面的SQL添加了一个分区但是它抛出了一个错误。

alter table str_mainframe_db add partition p_1 values ('A');

SQL Error: ORA-14323: cannot add partition when DEFAULT partition exists
14323. 00000 -  "cannot add partition when DEFAULT partition exists"
*Cause:    An ADD PARTITION operation cannot be executed when a partition
           with DEFAULT values exists

请帮忙?????????

1 个答案:

答案 0 :(得分:1)

您无法对现有表进行分区。

您需要创建一个新的分区表,然后将数据从旧表移动到新表。然后,您可以删除旧表并重命名新表以使用旧表的名称。

根据您的停机时间窗口和应用程序对数据的访问权限,您可能需要使用dbms_redefinition程序包来管理它。它需要花费更多的时间而不是手动操作,但它所带来的开销允许旧表在新表填充时保持在线状态。