Partition leeren/löschen und globale Indizes nutzbar halten
OraclePartitionierungBefehl
-- 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;Was es tut
Entfernt alte Daten sofort auf Partitionsebene statt zeilenweise per DELETE. Ab 12c markiert UPDATE INDEXES globale Indizes nur im Dictionary (asynchrone Wartung), statt jeden Eintrag zu aktualisieren; der Index bleibt sofort nutzbar, und verwaiste Einträge werden später bereinigt.
Wann einsetzen
Beim Löschen alter Zeiträume gemäß einer Datenaufbewahrungsrichtlinie, in ILM-/Purge-Jobs und um die Undo-/Redo-Last von DELETE auf großen Tabellen zu vermeiden.
Vorsicht
Erfordert die Partitioning-Option (kostenpflichtig, EE). DROP/TRUNCATE ist unumkehrbar (Flashback Table holt keine Partition zurück); sichere oder archiviere vorher per Exchange. Wird UPDATE INDEXES vergessen, werden globale Indizes UNUSABLE und Abfragen können auf ORA-01502 stoßen. Der Vorgang schlägt fehl, wenn Child-Tabellen darauf verweisen (FK). Bei Interval-Tabellen lässt sich die letzte Range-Partition (Transition) nicht löschen.