Não conheço nenhum utilitário ou função oracle para fazer isso. Você pode encontrar as informações necessárias para escrever seu próprio programa para fazer isso nas visualizações DBA_TAB_PARTITIONS ou ALL_TAB_PARTITIONS, semelhante ao seguinte:
SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE
FROM SYS.DBA_TAB_PARTITIONS
WHERE TABLE_OWNER = strSchema AND
TABLE_NAME = strTable
onde strSchema e strTable são o esquema e a tabela em que você está interessado. HIGH_VALUE é um campo LONG que contém o código para uma chamada para a função TO_DATE (supondo que sua tabela seja particionada em um campo de data); você precisará atribuir HIGH_VALUE a um campo LONG e, em seguida, atribuir o LONG a um VARCHAR2 para obter o valor em algum lugar que possa ser manipulado, de maneira semelhante a:
lHigh_value LONG;
strDate_clause VARCHAR2(100);
lHigh_value := aRow.HIGH_VALUE;
strDate_clause := lHigh_value;
Então você só precisa extrair os campos apropriados da cláusula DATE para determinar quais partições você precisa eliminar.
Compartilhe e curta.