数据清理与备份
本内容描述的是在Oracle数据库中,某些常用的数据表每日新增的数据量比较大,但是对于历史数据基本不变更数据的操作,平时仅用于查询。
本章节涉及分区操作的Sql可以参考上一篇文章:https://blog.csdn.net/SunMonking/article/details/117279632
分区交换清理主表(分区表)--> 中间表(未分区表)-->历史表(分区表)
按照主表的表结构创建一模一样的中间表和历史表。
upLastTmTrnDt-上上交易日期 lastTmTrnDt-上一交易日 trnDt-交易日期 nextTrnDt-下一交易日期
分区名称:part_日期
本次是把上上日数据交换到历史表中,主表保留当前日和上日两天的数据。
一、执行前检查
判断中间表是否存在
判断主表分区是否存在
判断历史表分区是否存在
二、分区交换
将主表(tbNm)的指定分区(part_upLastTmTrnDt)交换给中间表(tbNmMid)
将中间表(tbNmMid)数据交换到历史表(tbNmHis)指定分区(part_upLastTmTrnDt)
每次产生新的trnDt时,判断主表是否存在分区,如果不存在则创建分区(part_trnDt)
三、分区索引重建
查询历史表分区索引名称user_indexes,循环索引在新分区中重建
四、查询主表分区数据,验证分区交换是否成功。主表分区数据为0成功
五、删除主表已经交换的分区,校验主表新建下一日分区是否成功。