日期:2014-05-16  浏览次数:20779 次

oracle对现有大表进行分区
各位好,现在生产库有一张表数据量2亿,系统07年刚上线时并没有对其进行分区,只是一张普通的表,现在需要对其进行分区 我从手中资料了解到我好像需要重建一张分区表,然后把原来的表的数据一条条移进去,当然,重建的分区表的表名与原表肯定一致,所以建表前原名得重命名 


不知道我说的方法对不对,第一次做表分区算新人,有什么不对的老手们指点下,非常感谢。然后,我在想,如果我说的是对的,那么我移2亿数据一条条移,得移到什么时候去?对原表重命名会不会特慢?因为目前我们系统已经在投入使用了,所以如果要升级的话,给我的时间肯定很少,顶多一个晚上,我表示压力山大,这一晚能做完吗? 是不是我的想法不对,还是平常情况下对现有表做表分区根本不是我这样做的? 




------解决方案--------------------
收集一下访问这张表的SQL语句并了解相关的业务逻辑然后再考虑以什么字段来分区.
因为数据量较大,如果where条件中有日期的条件首选使用日期+主键的range+hash的复合分区方式.
即可以方便以后数据的迁移与备份还可以防止热块发生.
同时索引中包括分区字段的建本地前缀分区索引,其它建全局非前缀分区索引.



------解决方案--------------------
使用在线重定义的方式会非常方便的将普通表转换为分区表.