Créer un partitionnement interval et convertir une table range existante en interval
OraclePartitionnementCommande
-- 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';Ce que fait la commande
Le partitionnement interval crée automatiquement une nouvelle partition à l'arrivée de la première ligne au-delà de la dernière borne, ce qui élimine les erreurs ORA-14400 dues à l'oubli de la partition du mois suivant. SET INTERVAL convertit une table range existante sans déplacer de données.
Quand l'utiliser
Pour les tables qui croissent par date, comme les séries temporelles, les journaux et les commandes, et pour réduire les scripts de maintenance des partitions.
Attention
Exige l'option Partitioning (EE payante). La clé de partitionnement doit être une seule colonne NUMBER/DATE/TIMESTAMP ; une partition MAXVALUE doit d'abord être supprimée. Une date erronée ou extrême (par ex. l'an 9999) ouvre une partition lointaine et fausse la numérotation des partitions ; avec des intervalles étroits, vous pouvez approcher la limite de 1 048 575 partitions (ORA-14300), validez donc les dates dans l'application. Les partitions automatiques vont dans le tablespace par défaut de la table (orientez-les avec STORE IN).