Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Solte a partição mais antiga automaticamente no oracle 11G


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.