在 oracle 11g 中从普通列表分区切换到引用分区

kar*_*lia 5 oracle partitioning

我有一个主父表和多个子表,其中有正常分区,其中分区列在所有子表中重复。我想切换到参考分区(oracle 11g)。我的子表目前每个有 2 个分区,我需要删除这两个分区并替换为参考分区。

目前,我面临着删除最后一个分区并使用 ALTER 命令添加新参考分区的问题。

有没有办法做到这一点,因为我无法删除表并丢失数据在分区列上创建了索引。

我正在使用的查询:

ALTER TABLE CHILD_TABLE_1
    DROP PARTITIONS part1, part2
    UPDATE INDEXES; --- here only one partition was dropped

ALTER TABLE CHILD_TABLE_1 ADD PARTITION BY REFERENCE (foreign_key_with_parent);
Run Code Online (Sandbox Code Playgroud)

这给出了错误

错误:ORA-00902:无效的数据类型 SQLState:42000 错误代码:902

Mic*_*utz 0

我曾在另一个论坛中询问过从范围分区转换为引用的问题。

https://community.oracle.com/message/14807741

答案是:DBMS_REDEFINITION

这将是您的最佳选择,因为您有额外的空间和至少一些需要迁移到新表的约束(fk)。

DBMS_REDEFINITION为您完成所有繁重的工作(移动约束)。