Oracle: tabla de particiones por mes

Mi solución (meses en alemán):

PARTITION BY LIST ((to_char(GEBURTSDATUM, 'Month'))) ( PARTITION p1 VALUES('JANUAR'), PARTITION p2 VALUES('Februar'), PARTITION p3 VALUES('MÄRZ'), PARTITION p4 VALUES('APRIL'), PARTITION p5 VALUES('MAI'), PARTITION p6 VALUES('JUNI'), PARTITION p7 VALUES('JULI'), PARTITION p8 VALUES('AUGUST'), PARTITION p9 VALUES('SEPTEMBER'), PARTITION p10 VALUES('OKTOBER'), PARTITION p11 VALUES('NOVEMBER'), PARTITION p12 VALUES('DEZEMBER') ); 

Esto no funciona debido a la function to_char .

En 11g puede usar particiones basadas en funciones mediante la definición de una columna virtual: http://www.oracle-base.com/articles/11g/partitioning-enhancements-11gr1.php#virtual_column_based_partitioning

De lo contrario, debe definir y mantener manualmente una columna separada para el mes de partición.

Sugiero usar numbers de meses en lugar de nombres en ambos casos.

Si la tabla tiene una columna de date, la siguiente statement se puede utilizar como un ejemplo para la partición mensual a partir de hoy (Oracle 11g):

 PARTITION BY RANGE (date_column) INTERVAL (NUMTODSINTERVAL(1,'month') ) (PARTITION p_first VALUES LESS THAN ('16-MAY-2016')); 
    Intereting Posts