方法 2:CREATE TABLE ... AS SELECT + 交换分区(CTAS + EXCHANGE)
最快、最简单,适合停机窗口允许的场景。
步骤:
创建分区表(结构相同)
插入数据
INSERT INTO 分区表 SELECT * FROM 原表;
重建索引、约束
改名切换(可选)
优点:简单、速度快
缺点:停机、需重建索引约束
方法 3:Exchange Partition(分区交换)【超快】
适合:原表数据就是一个分区的范围(如全是 2025 年)
步骤:
建分区表(含对应分区)
交换分区(秒级)
ALTER TABLE 分区表 EXCHANGE PARTITION p2025
WITH TABLE 原表;
优点:秒级、几乎无 IO
缺点:数据必须刚好匹配一个分区
方法 4:EXP/IMP 或 EXPDP/IMPDP(数据泵)
适合:跨版本、跨平台、大表迁移 + 分区改造一起做
步骤:
目标库建分区表
导出原表
导入到分区表(PARTITION_OPTIONS)
优点:安全、可断点续传
缺点:慢、停机
方法 5:Oracle 12cR2+ 新特性:ALTER TABLE ... MODIFY TO PARTITION
12cR2 最爽语法:一行命令转分区
ALTER TABLE table_name
MODIFY TO PARTITION BY RANGE (create_time)
(
PARTITION p2024 VALUES LESS THAN (TO_DATE('2025-01-01','YYYY-MM-DD')),
PARTITION p2025 VALUES LESS THAN (MAXVALUE)
) ONLINE;