Oracle11g維護分割槽(九)——Truncatinging Partitions

Hoegh發表於2015-08-09

    使用ALTER TABLE ... TRUNCATE PARTITION語句從一個表分割槽中刪除所有資料。截斷分割槽和刪除一個分割槽類似,所不同的是該分割槽的資料被清空,而不是物理刪除。

    你不能截斷一個索引分割槽。但是,如果該表定義有本地索引,ALTER TABLE ... TRUNCATE PARTITION語句將會截斷每個本地索引中相匹配的分割槽。除非你指定了UPDATE INDEXES,任何全域性索引會被標識為UNUSABLE,必須重建。(對於索引組織表你不能使用UPDATE INDEXES,而是使用UPDATE GLOBAL INDEXES來代替)

截斷表分割槽

    使用ALTER TABLE ... TRUNCATE PARTITION語句從一個表分割槽移除所有行資料,回收或者不回收空間。在間隔分割槽表中,截斷一個分割槽並不會移動轉換點。在一個引用分割槽表中,你可以截斷分割槽和子分割槽。

截斷包含資料和全域性索引的分割槽

    如果分割槽包含資料和全域性索引,使用下面其中一種方法來截斷表分割槽。

方法一

    在ALTER TABLE ... TRUNCATE PARTITION語句執行期間,先不處理全域性索引。在這個例子中,sales表有一個被重建的全域性索引sales_area_ix

點選(此處)摺疊或開啟

  1. ALTER TABLE sales TRUNCATE PARTITION dec98;
  2. ALTER INDEX sales_area_ix REBUILD;
    這個方法最適用於大資料表,其中被截斷的分割槽包含很大比例的資料。


方法二

    在執行ALTER TABLE ... TRUNCATE PARTITION語句前,執行DELETE語句來刪除分割槽的所有資料行。DELETE語句會更新全域性索引,並且觸發觸發器和產生redoundo日誌。

    例如,要刪除第一個分割槽,執行以下語句:

點選(此處)摺疊或開啟

  1. DELETE FROM sales PARTITION (dec98);
  2. ALTER TABLE sales TRUNCATE PARTITION dec98;
這個方法最適用於小資料表,或者大資料表中被截斷分割槽包含小比例資料的情形。


方法三

ALTER TABLE語句中指定UPDATE INDEXES。這個將導致當分割槽被截斷的同時全域性索引也被截斷。

點選(此處)摺疊或開啟

  1. ALTER TABLE sales TRUNCATE PARTITION dec98
  2.      UPDATE INDEXES;


 

截斷包含資料和引用完整性約束的分割槽

    如果一個分割槽包含資料並有引用完整性約束,那麼你不能截斷這個分割槽。如果被移除的分割槽中不包含被其他資料引用的資料,那麼選擇兩個方法中的任意一個來截斷表分割槽。

方法一

    禁用完整性約束,執行ALTER TABLE ... TRUNCATE PARTITION語句,然後重新啟用完整性約束。這個方法最適用於大資料表,其中被截斷的分割槽包含很大比例的資料。如果其他表中仍然存在引用資料,那麼你必須移除這些資料來重新啟用完整性約束。

方法二

    在你執行ALTER TABLE ... TRUNCATE PARTITION語句前,執行DELETE語句來刪除分割槽的所有資料行。DELETE語句強制引用完整性約束,並且觸發觸發器、生成redoundo日誌。如果建立外來鍵約束時指定了ON DELETE CASCADE選型,那麼引用表的資料將會被刪除。

點選(此處)摺疊或開啟

  1. DELETE FROM sales partition (dec94);
  2. ALTER TABLE sales TRUNCATE PARTITION dec94;
    這個方法最適用於小資料表,或者大資料表中被截斷分割槽包含小比例資料的情形。


注意:

在你刪除分割槽的所有資料行之前,你可以透過設定NOLOGGING屬性來大幅降低日誌數量(使用ALTER TABLE ... MODIFY PARTITION ... NOLOGGING

截斷子分割槽

    你可以使用ALTER TABLE ... TRUNCATE SUBPARTITION語句來從一個複合分割槽表的子分割槽中刪除所有資料行。相關的本地索引子分割槽也會被截斷。

    下面的語句顯式瞭如果截斷一個表中一個子分割槽的資料。在這個例子中,被刪除行所佔用的空間將會提供給表空間內其他模式物件使用。

點選(此處)摺疊或開啟

  1. ALTER TABLE diving
  2.    TRUNCATE SUBPARTITION us_locations
  3.       DROP STORAGE;

hoegh
15.8.9
-- The End --


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1766519/,如需轉載,請註明出處,否則將追究法律責任。

相關文章