由于客户某表月初通过ogg导入数据较多,ogg未能完成。因此决定使用数据泵临时导入。
停止ogg,删除表分区数据。通过delete加条件筛选数据,发现数据量较大,尝试删除,运行很长时间后,undo不够用报错。
决定,truancate该分区。查看表的分区,发现存在数个全局索引和本地索引,百度一下对分区表某分区进行drop/truncate操作。
① 马上回收空间:
alter table table_name truncate partition partition_name drop storage;
② 同时维护全局索引:
alter table table_name drop partition partition_name update global indexes;
㈡ 对全局索引的作用
大分区表truncate partition后,需要对全局索引进行维护,否则,global index会变成unusable
问题介绍:
① 在drop partition时,为了维护global索引,要加update indexes或是update global indexes条件
②在truncate partition时也要维护global索引,要加update indexes或是update global indexes条件
UPDATE INDEXES同时维护全局和本地索引
对于DROP/TRUNCATE PARTITION而言 ,二者没有太大的区别
对于MERGE和SPLIT PARTITION,你就可以看到二者的区别了
虽然index是变得valid了,但是index的空间没有释放
因为该操作不等于REBUILD,只是在进行DDL的时候,同步维护索引信息而已
综上,可以使用
alter table table_name truncate partition (p1) update indexes;
或
alter table table_name truncate partition (p1) update global indexes;