DBAtlas · Veritabanı operasyon atlası

Partition'ı TRUNCATE/DROP et ve global index'leri kullanılabilir tut

OraclePartition

Komut

-- Partition icerigini bosalt / partition'i kaldir (global index'ler bakimda kalir):
ALTER TABLE musteri_app.satis_part TRUNCATE PARTITION p2025 UPDATE INDEXES;
ALTER TABLE musteri_app.satis_part DROP PARTITION p2025 UPDATE INDEXES;

-- 12c+ asenkron global index bakimi: index VALID ama yetim kayit tasir
SELECT index_name, status, orphaned_entries
FROM   dba_indexes
WHERE  owner = 'MUSTERI_APP' AND table_name = 'SATIS_PART';

-- Yetim kayitlari hemen temizle (normalde SYS.PMO_DEFERRED_GIDX_MAINT_JOB gece yapar):
EXEC DBMS_PART.CLEANUP_GIDX(schema_name_in => 'MUSTERI_APP', table_name_in => 'SATIS_PART');
-- veya tek index: ALTER INDEX musteri_app.satis_part_id_gidx COALESCE CLEANUP;

-- Partition'i adiyla degil degeriyle hedefle:
-- ALTER TABLE musteri_app.satis_part DROP PARTITION FOR (DATE '2025-06-15') UPDATE INDEXES;

Ne yapar?

Eski verinin satır satır DELETE yerine partition düzeyinde anında silinmesini sağlar. 12c+ ile UPDATE INDEXES, global index'leri tek tek güncellemek yerine yalnız sözlükte işaretler (asenkron bakım); index anında kullanılabilir kalır, yetim kayıtlar sonra temizlenir.

Ne zaman kullanılır?

Veri saklama politikası (retention) gereği eski dönemleri atarken, ILM/purge işlerinde, büyük tabloda DELETE'in yarattığı undo/redo yükünden kaçınmak için.

Dikkat

Partitioning opsiyonu (EE ek lisans) gerekir. DROP/TRUNCATE geri alınamaz (flashback table partition'ı geri getirmez); önce yedek veya exchange ile arşiv al. UPDATE INDEXES unutulursa global index'ler UNUSABLE olur ve sorgular ORA-01502 alabilir. Referans veren child tablolar varsa (FK) işlem hata verir. Interval tablolarda son range (transition) partition'ı düşürülemez.

DBAtlas'ta aç →

İlgili