Oracle11g維護分割槽(九)——Truncatinging Partitions
使用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。
點選(此處)摺疊或開啟
-
ALTER TABLE sales TRUNCATE PARTITION dec98;
- ALTER INDEX sales_area_ix REBUILD;
方法二
在執行ALTER TABLE ... TRUNCATE PARTITION語句前,執行DELETE語句來刪除分割槽的所有資料行。DELETE語句會更新全域性索引,並且觸發觸發器和產生redo和undo日誌。
例如,要刪除第一個分割槽,執行以下語句:
點選(此處)摺疊或開啟
-
DELETE FROM sales PARTITION (dec98);
- ALTER TABLE sales TRUNCATE PARTITION dec98;
方法三
在ALTER TABLE語句中指定UPDATE INDEXES。這個將導致當分割槽被截斷的同時全域性索引也被截斷。
點選(此處)摺疊或開啟
-
ALTER TABLE sales TRUNCATE PARTITION dec98
- UPDATE INDEXES;
截斷包含資料和引用完整性約束的分割槽
如果一個分割槽包含資料並有引用完整性約束,那麼你不能截斷這個分割槽。如果被移除的分割槽中不包含被其他資料引用的資料,那麼選擇兩個方法中的任意一個來截斷表分割槽。
方法一
禁用完整性約束,執行ALTER TABLE ... TRUNCATE PARTITION語句,然後重新啟用完整性約束。這個方法最適用於大資料表,其中被截斷的分割槽包含很大比例的資料。如果其他表中仍然存在引用資料,那麼你必須移除這些資料來重新啟用完整性約束。
方法二
在你執行ALTER TABLE ... TRUNCATE PARTITION語句前,執行DELETE語句來刪除分割槽的所有資料行。DELETE語句強制引用完整性約束,並且觸發觸發器、生成redo和undo日誌。如果建立外來鍵約束時指定了ON DELETE CASCADE選型,那麼引用表的資料將會被刪除。
點選(此處)摺疊或開啟
-
DELETE FROM sales partition (dec94);
- ALTER TABLE sales TRUNCATE PARTITION dec94;
注意:
在你刪除分割槽的所有資料行之前,你可以透過設定NOLOGGING屬性來大幅降低日誌數量(使用ALTER TABLE ... MODIFY PARTITION ... NOLOGGING)
截斷子分割槽
你可以使用ALTER TABLE ... TRUNCATE SUBPARTITION語句來從一個複合分割槽表的子分割槽中刪除所有資料行。相關的本地索引子分割槽也會被截斷。
下面的語句顯式瞭如果截斷一個表中一個子分割槽的資料。在這個例子中,被刪除行所佔用的空間將會提供給表空間內其他模式物件使用。
點選(此處)摺疊或開啟
-
ALTER TABLE diving
-
TRUNCATE SUBPARTITION us_locations
- DROP STORAGE;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1766519/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11g維護分割槽(八)——Renaming PartitionsOracle
- Oracle11g維護分割槽(四)——Exchanging PartitionsOracle
- Oracle11g維護分割槽(二)——Coalescing PartitionsOracle
- Oracle11g維護分割槽(三)——Dropping PartitionsOracle
- Oracle11g維護分割槽(五)——Merging PartitionsOracle
- Oracle11g維護分割槽(一)——Adding PartitionsOracle
- Oracle11g維護分割槽(七)——Modifying Real Attributes of PartitionsOracle
- Oracle11g維護分割槽概述Oracle
- Oracle11g維護分割槽(六)——Modifying Default AttributesOracle
- oracle分割槽表的維護Oracle
- 【轉】Oracle分割槽表維護Oracle
- Oracle分割槽表基礎運維-08Coalescing PartitionsOracle運維
- 分割槽索引維護(add partition)索引
- 測試oracle子分割槽維護Oracle
- oracle分割槽及分割槽索引partition_partition index_維護(一)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(二)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(三)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(四)Oracle索引Index
- Oracle11g INTERVAL分割槽新增分割槽策略Oracle
- 海量資料處理_表分割槽(分割槽自動維護與歷史分割槽歸檔)
- ORACLE分割槽表梳理系列(二)- 分割槽表日常維護及注意事項Oracle
- oracle分割槽及分割槽索引partition_partition index_維護(五)_快捷方法Oracle索引Index
- 關於 Oracle 分割槽索引的建立和維護Oracle索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響索引
- 在範圍分割槽表上分割槽維護操作對索引狀態的影響(1)索引
- 【eygle】Oracle的分割槽表和Local索引建立與維護Oracle索引
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- 在範圍分割槽表上分割槽維護操作對全域性及本地索引狀態的影響(2)索引
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Oracle 12.2 BUG :分割槽維護導致的 ORA-600 KKPOFPCD3Oracle