Scinder et fusionner des partitions en ligne
OraclePartitionnementCommande
-- 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';Ce que fait la commande
SPLIT divise une partition en deux à une valeur limite (12c+ : en plusieurs) ; MERGE combine des partitions adjacentes. Avec ONLINE, les DML continuent pendant l'opération ; avec UPDATE INDEXES, les index locaux et globaux ne deviennent pas UNUSABLE.
Quand l'utiliser
Pour scinder une partition MAXVALUE/"autre" qui a grossi, fusionner d'anciennes petites partitions avant archivage, ou changer le schéma de partitionnement (mensuel vers trimestriel).
Attention
Exige l'option Partitioning (EE payante) ; ONLINE exige Enterprise Edition. SPLIT/MERGE réécrit physiquement les données : lent sur les grosses partitions, génère du redo/undo et de l'espace temporaire. Sans ONLINE, la table est verrouillée pour les DML pendant l'opération ; sans UPDATE INDEXES, les index globaux deviennent UNUSABLE. Scinder une partition vide est rapide (fast split).
Voir aussi
- Charger en masse ou archiver des données par échange de partition
- Tronquer/supprimer une partition en gardant les index globaux utilisables
- Créer un partitionnement interval et convertir une table range existante en interval
- Vérifier les clés de partitionnement et l'utilisation des partition-wise joins