Oracle-Oracle里删除表的部分分区,导致全局索引失效,怎么解决?
Oracle里删除表的部分分区,导致全局索引失效,这个全局索引是个自增id,不能没有。
由于每天都要把过期的数据删除,delete又太慢,所以我用了删除分区的方法(分区是按时间间隔分区的)。
这个问题怎么解决?有木有更好的删除过期数据的方法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最后,在删除分区的语句后面,添加了update indexes,比delete再删除还是要快的,问题解决了。
删除分区选择在系统空闲或者相对空闲的时间进行,在删除完分区后,立即对失效的索引进行重建。
在www.eygle.com上看到这方面的解决方案:
如果GLOBAL INDEX是最重要的,就应该先DELETE 数据再DROP PARTITION。
在下面情况下,手工删除数据的代价比DROP PARTITION要小
- 如果要删除的数据只占整个TABLE的小部分
- 在TABLE中有很多的GLOBAL INDEX。
在下面情况下,手工删除数据的代价比DROP PARTITION要大
- 如果要删除的数据占整个TABLE的绝大部分
- 在TABLE中没有很多的GLOBAL INDEX。