Oracle里删除表的部分分区,导致全局索引失效,怎么解决?


Oracle里删除表的部分分区,导致全局索引失效,这个全局索引是个自增id,不能没有。

由于每天都要把过期的数据删除,delete又太慢,所以我用了删除分区的方法(分区是按时间间隔分区的)。

这个问题怎么解决?有木有更好的删除过期数据的方法?

数据库 oracle

想死1遍吗 10 years, 10 months ago

删除分区选择在系统空闲或者相对空闲的时间进行,在删除完分区后,立即对失效的索引进行重建。

在www.eygle.com上看到这方面的解决方案:
如果GLOBAL INDEX是最重要的,就应该先DELETE 数据再DROP PARTITION。
在下面情况下,手工删除数据的代价比DROP PARTITION要小
- 如果要删除的数据只占整个TABLE的小部分
- 在TABLE中有很多的GLOBAL INDEX。
在下面情况下,手工删除数据的代价比DROP PARTITION要大
- 如果要删除的数据占整个TABLE的绝大部分
- 在TABLE中没有很多的GLOBAL INDEX。

夏洛特.德诺阿 answered 10 years, 10 months ago

Your Answer