ORACLE刪除分區


業務需求:定期刪除表中三個月之前的數據

說明:由於表采取一個月一個分區的設計,所以刪除三個月之前的數據也就是刪除三個月之前的分區。但需要注意的是刪除分區后全局索引會失效,而本地local索引不會受到影響。

刪除分區的語法:

ALTER TABLE TABLE_NAME TRUNCATE PARTITION (PARTITION_NAME);

假如表名是:T_GOODS_RECORD_DETAIL

需要刪除的分區分別是:PAR_G001,PAR_G002。

則刪除分區的SQL:

ALTER TABLE T_GOODS_RECORD_DETAIL TRUNCATE PARTITION PAR_G001;--可以不帶括號
ALTER TABLE T_GOODS_RECORD_DETAIL TRUNCATE PARTITION (PAR_G002);

 

一般表的主鍵ID是全局索引,所以在刪除分區后需要維護全局索引,SQL如下:

ALTER INDEX 索引名 REBUILD ONLINE;
--假如索引是IDX_GOODS_ID,則sql語句為:
ALTER INDEX IDX_GOODS_ID REBUILD ONLINE;

也可以在刪除分區的時候就維護索引,SQL是:

ALTER TABLE T_GOODS_RECORD_DETAIL TRUNCATE PARTITION (PAR_G001) UPDATE GLOBAL INDEX;

 但是在程序中rebuild索引的時候一定在所有分區都刪除完之后再操作。因為如果表的數據量太大的話rebuild索引會非常耗時!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM