DBAtlas · Atlas für Datenbankbetrieb

Interval-Partitionierung anlegen und eine bestehende Range-Tabelle auf Interval umstellen

OraclePartitionierung

Befehl

-- New table: a partition is created automatically for each month
CREATE TABLE customer_app.measurements (
  ts        DATE   NOT NULL,
  sensor_id NUMBER,
  value     NUMBER)
PARTITION BY RANGE (ts) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
( PARTITION p_first VALUES LESS THAN (DATE '2026-01-01') );

-- Convert an existing range table to interval (there must be no MAXVALUE partition):
ALTER TABLE customer_app.sale_part SET INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'));
-- Back to range: ALTER TABLE customer_app.sale_part SET INTERVAL ();

-- Rename a system-named partition to a meaningful name:
ALTER TABLE customer_app.measurements RENAME PARTITION FOR (DATE '2026-03-15') TO p2026_03;

-- Check:
SELECT partition_name, partition_position, interval, high_value
FROM   dba_tab_partitions
WHERE  table_owner = 'CUSTOMER_APP' AND table_name = 'MEASUREMENTS'
ORDER  BY partition_position;

SELECT table_name, partitioning_type, interval
FROM   dba_part_tables
WHERE  owner = 'CUSTOMER_APP';

Was es tut

Interval-Partitionierung legt automatisch eine neue Partition an, sobald die erste Zeile jenseits der letzten Grenze eintrifft, und beseitigt so ORA-14400-Fehler durch eine vergessene Partition für den nächsten Monat. SET INTERVAL stellt eine bestehende Range-Tabelle um, ohne Daten zu verschieben.

Wann einsetzen

Für Tabellen, die nach Datum wachsen, etwa Zeitreihen, Logs und Bestellungen, und um Skripte zur Partitionswartung zu reduzieren.

Vorsicht

Erfordert die Partitioning-Option (kostenpflichtig, EE). Der Partitionsschlüssel muss eine einzelne NUMBER-/DATE-/TIMESTAMP-Spalte sein; eine MAXVALUE-Partition muss zuerst entfernt werden. Ein fehlerhaftes oder extremes Datum (z. B. Jahr 9999) öffnet eine weit entfernte Partition und verzerrt die Partitionsnummerierung; bei engen Intervallen kannst du dich dem Limit von 1.048.575 Partitionen nähern (ORA-14300), daher Datumswerte in der Anwendung validieren. Automatische Partitionen landen im Standard-Tablespace der Tabelle (mit STORE IN umlenken).

In DBAtlas öffnen →

Verwandte Einträge