sql >> Databasteknik >  >> RDS >> Oracle

Oracle DB daglig partitionering

här är ett exempel på hur man gör det på Oracle 11g och det fungerar väldigt bra. Jag har inte provat det på Oracle 10g, du kan prova det.

Så här skapar du en tabell med dagliga partitioner:

CREATE TABLE XXX (
    partition_date   DATE,
  ...,
  ...,
)
PARTITION BY RANGE (partition_date)
INTERVAL (NUMTODSINTERVAL(1, 'day'))
(
   PARTITION part_01 values LESS THAN (TO_DATE('2000-01-01','YYYY-MM-DD'))
)
TABLESPACE  MY_TABLESPACE
NOLOGGING;

Som du ser ovan kommer Oracle automatiskt att skapa separata partitioner för varje distinkt partition_day efter 1 januari 2000. Posterna, vars partition_date är äldre än detta datum, kommer att lagras i en partition som heter 'part_01'.

Du kan övervaka dina tabellpartitioner med detta uttalande:

SELECT * FROM user_tab_partitions WHERE table_name = 'XXX';

Efteråt, när du vill ta bort vissa partitioner, använd följande kommando:

ALTER TABLE XXX DROP PARTITION AAAAAA UPDATE GLOBAL INDEXES

där 'AAAAAA' är partionsnamn.

Jag hoppas att det kommer att hjälpa dig!



  1. Ta bort rader:Ingen enskild medlem har fler än x poster

  2. Sortering efter någon kolumn och även efter rand() i MySQL

  3. Python sqlite3 platshållare

  4. Ta bort dubbletter i postgres