项目背景
历史数据备份或者删除,一般是转移到历史表,然后通过定时任务定期的删除数据,如果采用delete会出现脏读脏写,用truncate还不一定符合业务的要求,于是采用了创建分区的方式进行数据的转移,以及最后的数据删除
创建分区语句
create table tTestPartition
(
id varchar2(32) not null ,
create_time date
)
partition by range (create_time)
(pratition part_202103 values less than(to_date('2021-03','yyyy-mm'))),
partition P_MAXVAL value less than(MAXVALUE)
把分区数据迁移到目标表
alter talbe ${tablename} exchange PARTITION ${partitionName} with table ${tablename}
切割P_MAXVAL分为2个分区
alter ${tablename} split partition P_MAXVAL at ('2021-03') into (partition ${partitionName},partiton p_MAXVAL)
删除指定表的指定分区
alter table ${tablename} drop partition ${partitionName}
生成告警
每次删除分区后都提示有索引失效
解决方式
1.不创建全局索引,索引默认都是全局,默认创建加上local
2.注意主键是全局索引,可以修改为local并且创建一个唯一索引