1. 程式人生 > >oracle drop、truncate 分割槽表分割槽注意

oracle drop、truncate 分割槽表分割槽注意

由於客戶某表月初通過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;