暂无图片
含BLOB字段的800G的非分区大表如何清理历史数据
我来答
分享
dqf646585617
2019-12-17
含BLOB字段的800G的非分区大表如何清理历史数据
暂无图片 5M

专家们好:
目前客户这边有一个需求就是清理含BLOB字段的非分区大表三年之前的历史数据。我们考虑了两种方式:
1.通过delete分批分时间-写存储过程实现,但是由于是ADG环境,且我们的归档空间有限,担心该方式持续时间过长,对生产造成的隐患较大
2.通过CTAS+Parallel保留三年之内的历史数据,然后通过停机+rename实现,客户可以接受的停机时间是4到5个小时,但是我们在生产上模拟了CTAS+parallel+6个月的数据,【create table xxxxx tablespace xxxxx lob (“xxxxx”) store as
securefile (tablespace xxxx1 compress high deduplicate) parallel 8 as select * from docxxx where xxxid >= (select min(xxx_id) from xxxlib where as_datexxxed >= add_months(trunc(sysdate), -6));】结果跑了4个小时都没跑完,更何况是3年的数据,且产生了大量的归档,我们边备边删除过时的归档,风险太大。
所以:我想问专门们是否有更好的方式可以完成以上的需求,或者说我以上提到的两种方式用的不准确

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
杨杰

写个循环,delete的时候可以按时间,分批删除分批提交,比如一次删除一个小时的数据(根据实际数据情况),建议在业务空闲时清理。

暂无图片 评论
暂无图片 有用 0
gelyon

1.ctas当时中加nologging并且开并发,clob能否不用压缩

2.分批创建多个表,select的时候时间控制,比如半年一个三年也就6个表

以上方式试试

暂无图片 评论
暂无图片 有用 0
gelyon

忘了有adg,开了附加日志,没法不记日志

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏