DBAtlas · Veritabanı operasyon atlası

Partition'ı online böl (SPLIT) ve birleştir (MERGE)

OraclePartition

Komut

-- SPLIT: bir range partition'i ikiye bol, indeksler kullanilabilir kalsin
ALTER TABLE musteri_app.satis_part
  SPLIT PARTITION p2026_h2 AT (DATE '2026-10-01')
  INTO (PARTITION p2026_q3, PARTITION p2026_q4)
  UPDATE INDEXES ONLINE;

-- MERGE: iki komsu partition'i birlestir
ALTER TABLE musteri_app.satis_part
  MERGE PARTITIONS p2026_q3, p2026_q4 INTO PARTITION p2026_h2
  UPDATE INDEXES ONLINE;

-- ADD: en sona yeni partition (MAXVALUE yoksa)
ALTER TABLE musteri_app.satis_part
  ADD PARTITION p2027 VALUES LESS THAN (DATE '2028-01-01');

-- Kontrol: partition sinirlari ve UNUSABLE index partition'lari
SELECT partition_name, partition_position, high_value, num_rows
FROM   dba_tab_partitions
WHERE  table_owner = 'MUSTERI_APP' AND table_name = 'SATIS_PART'
ORDER  BY partition_position;

SELECT index_name, partition_name, status
FROM   dba_ind_partitions
WHERE  index_owner = 'MUSTERI_APP' AND status <> 'USABLE';

Ne yapar?

SPLIT bir partition'ı sınır değerinden ikiye (12c+ birden çoğa) ayırır; MERGE komşu partition'ları birleştirir. ONLINE ile işlem sırasında DML devam eder, UPDATE INDEXES ile local ve global index'ler UNUSABLE olmaz.

Ne zaman kullanılır?

MAXVALUE/"diğer" partition'ı büyüdüğünde bölmek, eski küçük partition'ları arşiv öncesi birleştirmek, partition stratejisini (aylık → çeyreklik) değiştirmek için.

Dikkat

Partitioning opsiyonu (EE ek lisans) gerekir; ONLINE için Enterprise Edition gerekir. SPLIT/MERGE veriyi fiziksel olarak yeniden yazar: büyük partition'da uzun sürer, redo/undo ve geçici alan üretir. ONLINE olmadan işlem süresince tablo DML'e kilitlenir; UPDATE INDEXES olmadan global index'ler UNUSABLE olur. Boş partition'ı bölmek hızlıdır (fast split).

DBAtlas'ta aç →

İlgili