Je ne connais aucun utilitaire ou fonction oracle pour le faire. Vous pouvez trouver les informations dont vous avez besoin pour écrire votre propre programme pour ce faire dans les vues DBA_TAB_PARTITIONS ou ALL_TAB_PARTITIONS, comme suit :
SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE
FROM SYS.DBA_TAB_PARTITIONS
WHERE TABLE_OWNER = strSchema AND
TABLE_NAME = strTable
où strSchema et strTable sont le schéma et la table qui vous intéressent. HIGH_VALUE est un champ LONG qui contient le code d'un appel à la fonction TO_DATE (en supposant que votre table est partitionnée sur un champ de date) ; vous devrez affecter HIGH_VALUE à un champ LONG, puis affecter le LONG à un VARCHAR2 afin d'obtenir la valeur à un endroit où elle peut être manipulée, d'une manière similaire à :
lHigh_value LONG;
strDate_clause VARCHAR2(100);
lHigh_value := aRow.HIGH_VALUE;
strDate_clause := lHigh_value;
Ensuite, il vous suffit d'extraire les champs appropriés de la clause DATE afin de déterminer quelles partitions vous devez supprimer.
Partagez et profitez.