Oracle中是否存在ALTER TABLE MODIFY语法彻底移除表分区?
Oracle 彻底移除分区的DDL语法说明
- 目前Oracle没有提供通过
ALTER TABLE MODIFY类DDL语法直接彻底移除分区的官方支持方案。 - 尽管12c及以后版本支持
ALTER TABLE XYZ MODIFY PARTITION BY ...语法,可快速实现非分区表转分区表或修改现有分区方案,但反向的“分区表转非分区表”操作,并没有对应的简洁ALTER TABLE语法。 - 你提到的CTAS+Rename是官方认可的传统实现方式,具体步骤如下:
- 创建非分区结构的新表:
CREATE TABLE new_table AS SELECT * FROM partitioned_table; - 重命名原分区表做备份:
ALTER TABLE partitioned_table RENAME TO old_table; - 将新表重命名为原表名:
ALTER TABLE new_table RENAME TO partitioned_table; - 后续需要手动重建原表的索引、约束、权限等关联对象
- 创建非分区结构的新表:
- 若业务需要不停机操作,12.2及以上版本可借助
DBMS_REDEFINITION包进行在线表重定义,本质是后台复制数据并同步增量,同样不属于直接的ALTER TABLE MODIFY语法范畴。
内容的提问来源于stack exchange,提问作者Paul W
相关产品推荐
相关产品推荐

