DBAtlas · Atlas für Datenbankbetrieb

Partitionen online teilen und zusammenführen

OraclePartitionierung

Befehl

-- SPLIT: split a range partition in two, keep indexes usable
ALTER TABLE customer_app.sale_part
  SPLIT PARTITION p2026_h2 AT (DATE '2026-10-01')
  INTO (PARTITION p2026_q3, PARTITION p2026_q4)
  UPDATE INDEXES ONLINE;

-- MERGE: merge two adjacent partitions
ALTER TABLE customer_app.sale_part
  MERGE PARTITIONS p2026_q3, p2026_q4 INTO PARTITION p2026_h2
  UPDATE INDEXES ONLINE;

-- ADD: new partition at the end (when there is no MAXVALUE)
ALTER TABLE customer_app.sale_part
  ADD PARTITION p2027 VALUES LESS THAN (DATE '2028-01-01');

-- Check: partition bounds and UNUSABLE index partitions
SELECT partition_name, partition_position, high_value, num_rows
FROM   dba_tab_partitions
WHERE  table_owner = 'CUSTOMER_APP' AND table_name = 'SALE_PART'
ORDER  BY partition_position;

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

Was es tut

SPLIT teilt eine Partition an einem Grenzwert in zwei (ab 12c: in mehrere); MERGE führt benachbarte Partitionen zusammen. Mit ONLINE läuft DML während des Vorgangs weiter; mit UPDATE INDEXES werden lokale und globale Indizes nicht UNUSABLE.

Wann einsetzen

Um eine gewachsene MAXVALUE-/"Sonstige"-Partition zu teilen, kleine alte Partitionen vor der Archivierung zusammenzuführen oder das Partitionierungsschema zu ändern (monatlich zu quartalsweise).

Vorsicht

Erfordert die Partitioning-Option (kostenpflichtig, EE); ONLINE erfordert die Enterprise Edition. SPLIT/MERGE schreibt die Daten physisch neu: langsam bei großen Partitionen, erzeugt Redo/Undo und braucht temporären Platz. Ohne ONLINE ist die Tabelle während des Vorgangs für DML gesperrt; ohne UPDATE INDEXES werden globale Indizes UNUSABLE. Das Teilen einer leeren Partition ist schnell (Fast Split).

In DBAtlas öffnen →

Verwandte Einträge