问题描述
我有一个巨大的表与CLOB和BLOB两列。表的大小是300 GB ( 80 GB表大小220 GB LOB列)。
我们要求只保留3年的最新数据。实现这一目标的最佳方法是什么?
我的解决方案:
1.禁用约束/触发器/索引
2.创建3年的备份表 (通过cta)
3.截断主表
4.从备份表插入数据到主表 (通过批量收集)
5.启用约束/触发器/索引
请在这里评论,如果我的解决方案需要很长时间,可以更好地做到这一点?
问候,
哈利
我们要求只保留3年的最新数据。实现这一目标的最佳方法是什么?
我的解决方案:
1.禁用约束/触发器/索引
2.创建3年的备份表 (通过cta)
3.截断主表
4.从备份表插入数据到主表 (通过批量收集)
5.启用约束/触发器/索引
请在这里评论,如果我的解决方案需要很长时间,可以更好地做到这一点?
问候,
哈利
专家解答
不需要步骤1、3、4和5。
相反,请执行以下操作:
1.创建3年的备份表 (通过cta)
2.在此表上创建约束/索引
3.放下主表
4.将备份表重命名为主表
这节省了你做 (我猜非常慢) 插入。
加上这种方法,您可以使用在线表重新定义。这有助于消除/减少停机时间。并包括将索引等复制到新表的过程:
https://oracle-base.com/articles/11g/online-table-redefinition-enhancements-11gr1
相反,请执行以下操作:
1.创建3年的备份表 (通过cta)
2.在此表上创建约束/索引
3.放下主表
4.将备份表重命名为主表
这节省了你做 (我猜非常慢) 插入。
加上这种方法,您可以使用在线表重新定义。这有助于消除/减少停机时间。并包括将索引等复制到新表的过程:
https://oracle-base.com/articles/11g/online-table-redefinition-enhancements-11gr1
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




