暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle 普通表转分区表 标准方案文档

原创 张超 2026-03-30
27

适用版本:11gR2、12c、19c、23c


目标:将普通堆表(非分区)在线 / 离线转换为分区表,保留数据、索引、约束、依赖




一、适用场景


  • 表数据量大、查询慢、删除历史数据困难
  • 需要按时间 / 地区 / 类型做分区裁剪、分区交换、分区归档
  • 运维需要:快速删除分区、备份分区、优化 IO




二、普通表转分区表 5 种主流方法


推荐优先级排序:


方法 1:DBMS_REDEFINITION(在线重定义)【企业首选】


优点


✅ 在线转换、业务几乎不停


✅ 保留索引、约束、触发器、权限


✅ 支持分区键任意选择


✅ 11g 及以上通用


缺点


需要额外存储空间(原表 1 倍)


核心步骤


  1. 检查是否可重定义


    EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('USER','TABLE');
    



  2. 创建目标分区表(空表)
  3. 开始重定义

    sql

    EXEC DBMS_REDEFINITION.START_REDEF_TABLE(...);
    



  4. 同步数据(可选多次)


    EXEC DBMS_REDEFINITION.SYNC_INTERIM_TABLE(...);
    



  5. 完成重定义


    EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(...);
    




适用:生产核心表、不能停机。




方法 2:CREATE TABLE ... AS SELECT + 交换分区(CTAS + EXCHANGE)


最快、最简单,适合停机窗口允许的场景。


步骤:


  1. 创建分区表(结构相同)
  2. 插入数据


    INSERT INTO 分区表 SELECT * FROM 原表;
    



  3. 重建索引、约束
  4. 改名切换(可选)


优点:简单、速度快


缺点:停机、需重建索引约束




方法 3:Exchange Partition(分区交换)【超快】


适合:原表数据就是一个分区的范围(如全是 2025 年)


步骤:


  1. 建分区表(含对应分区)
  2. 交换分区(秒级)


    ALTER TABLE 分区表 EXCHANGE PARTITION p2025
    WITH TABLE 原表;
    




优点:秒级、几乎无 IO


缺点:数据必须刚好匹配一个分区




方法 4:EXP/IMP 或 EXPDP/IMPDP(数据泵)


适合:跨版本、跨平台、大表迁移 + 分区改造一起做


步骤:


  1. 目标库建分区表
  2. 导出原表
  3. 导入到分区表(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;



优点


✅ 在线


✅ 一行命令


✅ 保留索引约束


✅ 官方最佳


缺点:需 12cR2 及以上




三、方案对比表(最实用)


表格

方法在线难度速度版本推荐度
12cR2 ALTER 转分区极低12cR2+⭐⭐⭐⭐⭐
DBMS_REDEFINITION11g+⭐⭐⭐⭐
CTAS + INSERT全版本⭐⭐⭐
Exchange Partition极快全版本⭐⭐⭐⭐
EXPDP/IMPDP全版本⭐⭐




四、转换前必做检查(重要)


  1. 表是否有主键(重定义需要)
  2. 空间是否足够(1.5~2 倍原表)
  3. 选择分区键:时间字段优先
  4. 禁止业务 DDL 期间操作
  5. 提前备份表
  6. 转换后重建 / 验证索引
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论