Interval partitioning oluştur ve mevcut range tabloyu interval'e çevir
OraclePartitionKomut
-- Yeni tablo: her ay icin partition otomatik olusur
CREATE TABLE musteri_app.olcum (
ts DATE NOT NULL,
sensor_id NUMBER,
deger NUMBER)
PARTITION BY RANGE (ts) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
( PARTITION p_ilk VALUES LESS THAN (DATE '2026-01-01') );
-- Mevcut range tabloyu interval'e cevir (MAXVALUE partition olmamali):
ALTER TABLE musteri_app.satis_part SET INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'));
-- Geri range'e: ALTER TABLE musteri_app.satis_part SET INTERVAL ();
-- Sistem adli partition'i anlamli adla yeniden adlandir:
ALTER TABLE musteri_app.olcum RENAME PARTITION FOR (DATE '2026-03-15') TO p2026_03;
-- Kontrol:
SELECT partition_name, partition_position, interval, high_value
FROM dba_tab_partitions
WHERE table_owner = 'MUSTERI_APP' AND table_name = 'OLCUM'
ORDER BY partition_position;
SELECT table_name, partitioning_type, interval
FROM dba_part_tables
WHERE owner = 'MUSTERI_APP';Ne yapar?
Interval partitioning, sınırın ötesine ilk satır geldiğinde yeni partition'ı otomatik yaratır; "gelecek ayın partition'ını eklemeyi unuttuk" kaynaklı ORA-14400 hatasını ortadan kaldırır. SET INTERVAL mevcut range tabloyu veri taşımadan dönüştürür.
Ne zaman kullanılır?
Zaman serisi, log, sipariş gibi tarihe göre büyüyen tablolarda; partition bakım script'lerini azaltmak için.
Dikkat
Partitioning opsiyonu (EE ek lisans) gerekir. Partition anahtarı tek kolon ve NUMBER/DATE/TIMESTAMP olmalı; MAXVALUE partition'ı varsa önce kaldırılmalı. Hatalı/uç bir tarih (ör. 9999 yılı) çok uzak bir partition açar ve partition numaralandırmasını bozar; dar interval'lerde 1.048.575 partition sınırına (ORA-14300) yaklaşılabilir, uygulamada tarih kontrolü yap. Otomatik partition'lar tablonun varsayılan tablespace'ine gider (STORE IN ile yönlendir).