Truncar/remover uma partição mantendo os índices globais utilizáveis
OracleParticionamentoComando
-- 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;O que faz
Remove dados antigos instantaneamente em nível de partição, em vez de DELETE linha a linha. No 12c+, UPDATE INDEXES apenas marca os índices globais no dicionário (manutenção assíncrona) em vez de atualizar cada entrada; o índice fica utilizável imediatamente e as entradas órfãs são limpas depois.
Quando usar
Ao expurgar períodos antigos sob uma política de retenção de dados, em jobs de ILM/expurgo e para evitar a carga de undo/redo de DELETE em tabelas grandes.
Atenção
Exige a opção Partitioning (EE com custo extra). DROP/TRUNCATE é irreversível (flashback table não traz uma partição de volta); faça backup ou arquive via exchange antes. Se UPDATE INDEXES for esquecido, os índices globais ficam UNUSABLE e as consultas podem receber ORA-01502. A operação falha se tabelas filhas a referenciarem (FK). Em tabelas interval a última partição range (de transição) não pode ser removida.