Oracle
 sql >> Database >  >> RDS >> Oracle

Elimina automaticamente la partizione più vecchia in Oracle 11G

Non conosco alcuna utilità o funzione di Oracle per farlo. Puoi trovare le informazioni necessarie per scrivere il tuo programma per farlo nelle viste DBA_TAB_PARTITIONS o ALL_TAB_PARTITIONS, simili alle seguenti:

SELECT TABLE_OWNER, TABLE_NAME, PARTITION_NAME, HIGH_VALUE
  FROM SYS.DBA_TAB_PARTITIONS
  WHERE TABLE_OWNER = strSchema AND
        TABLE_NAME = strTable

dove strSchema e strTable sono lo schema e la tabella che ti interessa. HIGH_VALUE è un campo LONG che contiene il codice per una chiamata alla funzione TO_DATE (supponendo che la tua tabella sia partizionata su un campo data); dovrai assegnare HIGH_VALUE a un campo LONG, quindi assegnare LONG a un VARCHAR2 per ottenere il valore da qualche parte può essere manipolato, in un modo simile a:

lHigh_value     LONG;
strDate_clause  VARCHAR2(100);

lHigh_value := aRow.HIGH_VALUE;
strDate_clause := lHigh_value;

Quindi devi solo estrarre i campi appropriati dalla clausola DATE per determinare quali partizioni devi eliminare.

Condividi e divertiti.