暂无图片
oracle表删除大量数据保留前3个月怎么删?
我来答
分享
王语嫣
2022-01-13
oracle表删除大量数据保留前3个月怎么删?

表数据大概 4亿

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
三笠丶
暂无图片

可以分两种情况,看你要保留的数据多还是要删除的数据多。

1、保留数据远大于删除数据,分批次进行delete操作

2、保留数据远小于删除数据,使用rename+ctas的方式,将保留数据捞出来即可。

具体根据实际情况来选择,如果一半一半,那我建议使用 rename+ctas。

如果该表需要频繁进行回收数据的话,那么建议转为分区表,通过对分区进行数据删除会更加方便快捷。

希望能帮助到你~

暂无图片 评论
暂无图片 有用 3
暂无图片
DarkAthena

楼上把我想说的都说了。。。
我也建议create table as留下你要保留的数据,然后把表重命名,
另外就是要注意索引和分区是否要和之前保持一致了

暂无图片 评论
暂无图片 有用 1
cqiwen
2022-01-14
如果这张表写入和更新很频繁怎么处理呢?
DarkAthena
答主
2022-01-14
闲时暂停业务和定时任务,这才几亿数据,1分钟以内可以完成所有命令执行
Uncopyrightable
之前用过一种方式 用ctas方式创建表,truncate删除旧表数据,再把需要数据插进需要表中; truncate比delete速度快些,最主要还是要看数据量,如果数据量太大可以在insert into时开并行和nologging
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏