删除分区时,别忘了做这件事
前几天 Oracle 数据库空间告警了,嗯,是时候清除数据了。
于是我分析了一波,决定删除某张大表的历史数据,保留近几个月的数据。
然后我发起了流程,因为比较急,所以我匆匆在测试环境写下如下代码:
alter table xxx_table_name drop partition xxxx_partition_name;
因为测试环境分区数量比较少,而且数据比较少,直接执行后没什么问题。于是到了晚上,我在生产环境执行这段代码。不出意料,果然成功了。但过了一会,告警显示索引失效。
我一拍脑门,心中骂了自己一句,XX,忘记重建索引了!
于是我马上执行如下代码:
alter index xxxx_partition_name rebuild online;
虽然重建索引是挺快的,但在发现问题前还是有业务在进行,影响了业务终究不太好。
实际上,这个问题是可以避免的,只需要在原来的脚本基础上,加上 update global indexes
alter table xxx_table_name drop partition xxxx_partition_name update global indexes;
至于为什么,后面有机会再写一篇博客,想看的可以关注一下我哦。
今天就记录一下当给自己提个醒,也给大伙提个醒。
#数据库##Oracle##职场#