在对很多客户的oracle数据库做优化的时候发现, 很多系统都有一些大表没有做分区, 导致性能不佳和维护不便.
下面介绍4种普通表改分区表的方法, 供参考:
方法1:
新建分区表, 然后insert select; 或者在创建新分区表的同时插入(CTAS ,create table as select). 完成后做两次rename table操作.
方法2:
在线重定义, 使用DBMS_REDEFINITION, 步骤有点复杂 ,网上有很多介绍该方法的文章, 可以百度一下.
方法3:
创建只有一个分区的分区表, 用exchange partition将原表变成分区表后,再split partition.
方法4:
适用12.2 版本, 可以直接通过alter table xxx modify 命令, 将表直接改成分区表, 支持online不停业务.
推荐使用方法3和4, 符合版本要求就用4. 其他几个方法版本8.x以上都支持.
上面只是简单介绍了方法, 具体还有很多细节, 包括global index/local index的选择, 如何用最短时间完成,减少对业务的影响等. 多测试,多比较,实践出真知.
另外, 分区字段和分区类型的选择, 也是非常重要的, 需要结合业务好好研究再做决定. oracle的分区是一个很好的功能, 以后有机会可以作为一个培训技术专题给大家分享.
如果大家还有更好的方法, 请在留言区留下您的建议, 多谢!
大表操作有风险, 祝一帆风顺!