Oracle 分区表删除分区数据时导致索引失效解决
一描述
今天有个小任务就是要删除些数据, 哈哈, 先自己小开心一下因为要删除的数据表是我之前转换成的分区表这个分区表是按照里面有个创建时间字段来分区的, 1 个季度为 1 个分区所以我现在要将 2017 年 7 月 1 日之前的数据删除 (数据量约 1000 万), 可以直接删除表分区数据就好如果要是用 delete 去删除这么多的数据, 我还要写存储过程, 分批提交的这样做就是这样的一简单的 truncate partition 引发了后继的业务故障最终查询到该表的索引失效, 重建立后恢复真是汗!
二实验
1. 创建环境SQL>create table TEST_PARTAS(id number(11),ACCOUNT_ID number(11),CTIME date)
2partitionbyrange(CTIME)
3interval(NUMTOYMINTERVAL(3,'month'))
4(partition P0 values less than(TO_DATE('2016-01-01','yyyy-mm-dd')),
5partition p1 values less than(to_date('2017-01-01','yyyy-mm-dd')));
Tablecreated.
SQL>insertintoTEST_PARTASselectt.id,t.account_id,t.create_timefromact_test t;
3483178rows created.
SQL>commit;
Commitcomplete.
SQL>EXEC SYS.DBMS_STATS.GATHER_TABLE_STATS('SAM','TEST_PARTAS'