单表大量数据如何储存和查询(详解如何正确的把归档表数据回退)
单表大量数据如何储存和查询(详解如何正确的把归档表数据回退)
概述最近业务部门要求之前的归档表数据回退一些指定数据,像这种操作建议还是规范一下流程,简单整理如下。
前提:业务部门确认必须回退,邮件申请。 相关表:car_apply_trays_boxes
1、检查当前数据备份最近日期
select * from CAR_APPLY_TRAYS order by inserted_date; select * from archiveuser.t_if_car_apply_trays_dmp order by created_date desc;
2、确认回退时间及数据量
select count(*) from archiveuser.t_if_car_apply_trays_dmp where created_date > SYSDATE - 60; select count(*) from archiveuser.t_if_car_apply_dmp where created_date > SYSDATE - 60; select count(*) from archiveuser.t_if_car_apply_trays_boxes_dmp where created_date > SYSDATE - 60;
3、确认回退sql
--恢复最近2个月的数据 insert into car_apply_trays (apply_id tray_id tray_code tray_type_code tray_arri_plan_date unload_place_code tray_length tray_width tray_height tray_weight box_qty isvalidated validatedtime inserted_date tray_size) select apply_id tray_id tray_code tray_type_code tray_arri_plan_date unload_place_code tray_length tray_width tray_height tray_weight box_qty isvalidated validatedtime created_date tray_size from archiveuser.t_if_car_apply_trays_dmp where created_date > SYSDATE - 60; commit;
4、业务确认
这里主要要先进行业务确认,确认数据恢复,且满足需求后再做数据删除动作。
5、删除归档表2个月的数据
delete from archiveuser.t_if_car_apply_trays_dmp where created_date > SYSDATE - 60; commit; delete from archiveuser.t_if_car_apply_dmp where created_date > SYSDATE - 60; delete from archiveuser.t_if_car_apply_trays_boxes_dmp where created_date > SYSDATE - 60; commit;
6、回收表高水位并重新收集统计信息
--回收高水位线 alter table my_objects nologging; alter table my_objects enable row movement; alter table my_objects shrink space; alter table my_objects logging; --分析表 ANALYZE TABLE my_objects COMPUTE STATISTICS; --查看高水位线 set serveroutput on exec show_space(p_segname=>'T_IF_CAR_APPLY_TRAYS_DMP' p_owner =>'ARCHIVEUSER' p_type => 'TABLE'); --HWM = total_blocks- Unused Blocks 1
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~