Oracle
 sql >> Base de données >  >> RDS >> Oracle

Supprimer automatiquement la partition la plus ancienne dans Oracle 11G

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.