DBAtlas · Atlas de operações de banco de dados

Truncar/remover uma partição mantendo os índices globais utilizáveis

OracleParticionamento

Comando

-- 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.

Abrir no DBAtlas →

Relacionados