历史数据迁移分三个步骤进行:
在线库与历史库把需要迁移(或转入)的表都改成分区表
在线库上的历史数据迁移到历史库
在线库上删除已备份的历史数据
其中步骤1只执行一次,步骤2、3可以每月执行一次,即每月清理一次历史数据。
下面是每一步的方案比较:
一. 在线库与历史库需要迁移的表都改成分区表
把需要迁移(或迁入)的表改成分区表,每月一个分区,改成分区表不需要对目前前的程序进行修改,对之前的应用是透明的。
改成分区表后,在做历史数据迁移时,可以做到只读取一个分区的数据,读取速度快;删除历史数据时,可以删除一个分区。
改为分区表的缺点是需要通过job定期新增分区和删除已备份分区,但这两个操作都是ddl操作,可在秒级完成。
下面是建立分区表的三种方案:
方案1. 根据原表建立分区表:
create table sys_visit_log_his_new partition by range(log_date)(
partition sale_2012_01 values less than(to_date('2012-02-01','YYYY-MM-DD')),
partition sale_2012_02 values less than(to_date('2012-03-01','YYYY-MM-DD')),
partition sale_2012_03 values less than(to_date('2012-04-01','YYYY-MM-DD')),
partition sale_2012_04