sql >> Databasteknik >  >> RDS >> Oracle

Släpp den äldsta partitionen automatiskt i Oracle 11G

Jag känner inte till något orakelverktyg eller -funktion för att göra detta. Du kan hitta informationen du behöver för att skriva ditt eget program för att göra detta i vyerna DBA_TAB_PARTITIONS eller ALL_TAB_PARTITIONS, liknande följande:

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

där strSchema och strTable är schemat och tabellen du är intresserad av. HIGH_VALUE är ett LONG-fält som innehåller koden för ett anrop till TO_DATE-funktionen (förutsatt att din tabell är partitionerad i ett datumfält); du måste tilldela HIGH_VALUE till ett LONG-fält och sedan tilldela LONG till en VARCHAR2 för att få värdet någonstans där det kan manipuleras, på ett sätt som liknar:

lHigh_value     LONG;
strDate_clause  VARCHAR2(100);

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

Sedan behöver du bara extrahera lämpliga fält från DATE-satsen för att avgöra vilka partitioner du behöver ta bort.

Dela och njut.



  1. @Temporal(TemporalType.DATE) med Oracle 12

  2. CreateSQLQuery fungerar men QueryOver gör det inte med NHibernate

  3. Fyll rader i kolumn A med värdet för kolumn B om villkoret i kolumn A är uppfyllt

  4. SQL Server Databas Backup Encryption