DBAtlas · Veritabanı operasyon atlası

Interval partitioning oluştur ve mevcut range tabloyu interval'e çevir

OraclePartition

Komut

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

DBAtlas'ta aç →

İlgili