パーティションにデータおよびグローバル索引が含まれている場合は、次のいずれかの方法(方法1、2または3)を使用して表パーティションを切り捨てます。
方法1
ALTER
TABLE
TRUNCATE
PARTITION
文の実行中は、グローバル索引はそのままにします。この例では、表sales
にはグローバル索引sales_area_ix
があり、この索引は再作成されます。
ALTER TABLE sales TRUNCATE PARTITION dec98; ALTER INDEX sales_area_ix REBUILD;
これは、切り捨てられるパーティションに表の合計データの大部分が含まれる大規模な表に最適な方法です。
方法2
ALTER
TABLE
TRUNCATE
PARTITION
文を発行する前に、DELETE
文を実行してパーティションからすべての行を削除します。DELETE
文によりグローバル索引が更新され、トリガーの起動や、REDOおよびUNDOログの生成も行われます。
たとえば、最初のパーティションを切り捨てるには、次の文を実行します。
DELETE FROM sales PARTITION (dec98); ALTER TABLE sales TRUNCATE PARTITION dec98;
これは、小規模な表、または切り捨てられるパーティションに含まれる表の合計データの割合が少ない場合に、大規模な表に最適な方法です。
方法3
ALTER TABLE
文にUPDATE
INDEXES
を指定します。これにより、パーティションが切り捨てられる時にグローバル索引も切り捨てられます。
ALTER TABLE sales TRUNCATE PARTITION dec98 UPDATE INDEXES;
非同期グローバル索引メンテナンスでは、この操作はメタデータのみの操作です。