sql >> Database >  >> RDS >> Oracle

Laat de oudste partitie automatisch vallen in oracle 11G

Ik ken geen orakelhulpprogramma of functie om dit te doen. Je kunt de informatie vinden die je nodig hebt om je eigen programma te schrijven om dit te doen in de DBA_TAB_PARTITIONS- of ALL_TAB_PARTITIONS-weergaven, vergelijkbaar met het volgende:

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

waarbij strSchema en strTable het schema en de tabel zijn waarin u geïnteresseerd bent. HIGH_VALUE is een LONG-veld dat de code bevat voor een aanroep van de TO_DATE-functie (ervan uitgaande dat uw tabel is gepartitioneerd in een datumveld); je moet HIGH_VALUE toewijzen aan een LONG-veld en vervolgens de LONG toewijzen aan een VARCHAR2 om de waarde ergens te krijgen waar het kan worden gemanipuleerd, op een manier die vergelijkbaar is met:

lHigh_value     LONG;
strDate_clause  VARCHAR2(100);

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

Vervolgens hoeft u alleen de juiste velden uit de DATE-component te extraheren om te bepalen welke partities u moet verwijderen.

Deel en geniet.



  1. Hoe zet ik standaardwaarden voor elke kolom in de tabel?

  2. SQL CASE:ken en vermijd 3 minder bekende problemen

  3. Kan MySQL-container niet verbinden met Tomcat-container in docker

  4. Wat is het doel van het gebruik van OPTION(MAXDOP 1) in SQL Server?