Tronquer/supprimer une partition en gardant les index globaux utilisables
OraclePartitionnementCommande
-- Empty a partition / remove a partition (global indexes stay maintained):
ALTER TABLE customer_app.sale_part TRUNCATE PARTITION p2025 UPDATE INDEXES;
ALTER TABLE customer_app.sale_part DROP PARTITION p2025 UPDATE INDEXES;
-- 12c+ asynchronous global index maintenance: index is VALID but carries orphaned entries
SELECT index_name, status, orphaned_entries
FROM dba_indexes
WHERE owner = 'CUSTOMER_APP' AND table_name = 'SALE_PART';
-- Clean orphaned entries now (normally SYS.PMO_DEFERRED_GIDX_MAINT_JOB does it at night):
EXEC DBMS_PART.CLEANUP_GIDX(schema_name_in => 'CUSTOMER_APP', table_name_in => 'SALE_PART');
-- or a single index: ALTER INDEX customer_app.sale_part_id_gidx COALESCE CLEANUP;
-- Target the partition by value instead of name:
-- ALTER TABLE customer_app.sale_part DROP PARTITION FOR (DATE '2025-06-15') UPDATE INDEXES;Ce que fait la commande
Supprime instantanément les anciennes données au niveau partition au lieu d'un DELETE ligne à ligne. En 12c+, UPDATE INDEXES ne fait que marquer les index globaux dans le dictionnaire (maintenance asynchrone) au lieu de mettre à jour chaque entrée ; l'index reste immédiatement utilisable et les entrées orphelines sont nettoyées plus tard.
Quand l'utiliser
Lors de la purge d'anciennes périodes dans le cadre d'une politique de rétention des données, dans les jobs ILM/de purge, et pour éviter la charge undo/redo d'un DELETE sur les grandes tables.
Attention
Exige l'option Partitioning (EE payante). DROP/TRUNCATE est irréversible (flashback table ne restaure pas une partition) ; sauvegardez ou archivez d'abord par échange. Si UPDATE INDEXES est oublié, les index globaux deviennent UNUSABLE et les requêtes peuvent rencontrer ORA-01502. L'opération échoue si des tables enfants la référencent (FK). Sur les tables interval, la dernière partition range (de transition) ne peut pas être supprimée.