パーティションにデータおよびグローバル索引が含まれている場合は、次のいずれかの方法(方法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;
非同期グローバル索引メンテナンスでは、この操作はメタデータのみの操作です。