業務需求:定期刪除表中三個月之前的資料
說明:由於表採取乙個月乙個分割槽的設計,所以刪除三個月之前的資料也就是刪除三個月之前的分割槽。但需要注意的是刪除分割槽後全域性索引會失效,而本地local索引不會受到影響。
刪除分割槽的語法:
altertable table_name truncate partition (partition_name);
假如表名是:t_goods_record_detail
需要刪除的分割槽分別是:par_g001,par_g002。
則刪除分割槽的sql:
altertable t_goods_record_detail truncate partition par_g001;--
可以不帶括號
alter
table t_goods_record_detail truncate partition (par_g002);
一般表的主鍵id是全域性索引,所以在刪除分割槽後需要維護全域性索引,sql如下:
alterindex
索引名 rebuild online;
--假如索引是idx_goods_id,則sql語句為:
alter
index idx_goods_id rebuild online;
也可以在刪除分割槽的時候就維護索引,sql是:
altertable t_goods_record_detail truncate partition (par_g001) update global index;
但是在程式中rebuild索引的時候一定在所有分割槽都刪除完之後再操作。因為如果表的資料量太大的話rebuild索引會非常耗時!!
Oracle分割槽表刪除分割槽資料時導致索引失效解決
問題描述 某錶資料量在1億左右,通過時間在建表時建立了分割槽,現在因為業務需要,需要刪除某個時間段內的資料,如果要是用delete去刪除這麼多的資料,我還要寫儲存過程,分批提交的這樣做,因此使用刪除分割槽資料的方式。就是這樣的一簡單的truncate partition 引發了後繼的業務故障。最終查...
oracle定期生成和刪除表分割槽
在專案中我們有個乙個表是秒資料表,這個表每天插入的資料量都有800多萬條,所以我們只儲存一段時間的資料,半個月之前的資料就會刪除掉,這樣當我們查詢當前即時的資料來繪製圖表的時候就會出現問題 oralce的高水位線的問題。在oracle裡,使用delete刪除資料以後,資料庫的儲存容量不會減少,而且使...
oracle 表無法修改刪除 無法刪除表分割槽
刪除分割槽語句 alter table dws db.dws ccrm dim attr spec drop partition day id 20200207 丟擲如下異常 failed execution error,return code 1 from org.apache.hadoop.hi...