Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Älteste Partition automatisch in Oracle 11G löschen

Ich kenne kein Orakel-Dienstprogramm oder eine Funktion, um dies zu tun. Sie können die Informationen, die Sie benötigen, um Ihr eigenes Programm dafür zu schreiben, in den Ansichten DBA_TAB_PARTITIONS oder ALL_TAB_PARTITIONS finden, ähnlich wie in den folgenden:

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

wobei strSchema und strTable das Schema und die Tabelle sind, an denen Sie interessiert sind. HIGH_VALUE ist ein LONG-Feld, das den Code für einen Aufruf der TO_DATE-Funktion enthält (vorausgesetzt, Ihre Tabelle ist nach einem Datumsfeld partitioniert); Sie müssen HIGH_VALUE einem LONG-Feld zuweisen und dann LONG einem VARCHAR2 zuweisen, um den Wert an einer Stelle zu erhalten, an der er bearbeitet werden kann, ähnlich wie bei:

lHigh_value     LONG;
strDate_clause  VARCHAR2(100);

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

Dann müssen Sie nur die entsprechenden Felder aus der DATE-Klausel extrahieren, um zu bestimmen, welche Partitionen Sie löschen müssen.

Teilen und genießen.