Jag känner inte till något orakelverktyg eller -funktion för att göra detta. Du kan hitta informationen du behöver för att skriva ditt eget program för att göra detta i vyerna DBA_TAB_PARTITIONS eller ALL_TAB_PARTITIONS, liknande följande:
SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE
FROM SYS.DBA_TAB_PARTITIONS
WHERE TABLE_OWNER = strSchema AND
TABLE_NAME = strTable
där strSchema och strTable är schemat och tabellen du är intresserad av. HIGH_VALUE är ett LONG-fält som innehåller koden för ett anrop till TO_DATE-funktionen (förutsatt att din tabell är partitionerad i ett datumfält); du måste tilldela HIGH_VALUE till ett LONG-fält och sedan tilldela LONG till en VARCHAR2 för att få värdet någonstans där det kan manipuleras, på ett sätt som liknar:
lHigh_value LONG;
strDate_clause VARCHAR2(100);
lHigh_value := aRow.HIGH_VALUE;
strDate_clause := lHigh_value;
Sedan behöver du bara extrahera lämpliga fält från DATE-satsen för att avgöra vilka partitioner du behöver ta bort.
Dela och njut.