Slipp kolonner

8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Diverse | PL / SQL | SQL | RAC | WebLogic | Linux

Hjem «Artikler» 8i «Her

Oracle 8i introduserte muligheten til å slippe en kolonne fra en tabell. Før dette var det nødvendig å slippe hele tabellen og gjenoppbygge den. Nå kan du markere en kolonne som ubrukt (logisk sletting) eller slette den fullstendig (fysisk sletting).

  • Logisk sletting
  • Fysisk sletting
  • Hensyn

Logisk sletting

På store tabeller kan prosessen med å fjerne en kolonne fysisk være veldig tidskrevende og ressurskrevende. Av denne grunn kan du bestemme deg for å logisk slette det.

alter table table_name set unused (column_name);alter table table_name set unused (column_name1, column_name2);

Når dette er gjort vil ikke kolonnene lenger være synlige for brukeren. Hvis du på et senere tidspunkt har tid til å fysisk slette kolonnene, kan dette gjøres ved hjelp av følgende.

alter table table_name drop unused columns;

På store tabeller kan du redusere mengden angre logger som er samlet opp ved å bruke alternativet CHECKPOINT som tvinger et sjekkpunkt etter det angitte rader er behandlet.

DBA_UNUSED_COL_TABS -visningen kan brukes til å vise antall ubrukte kolonner per tabell.

Fysisk sletting

For å slippe en kolonne fysisk kan du bruke en av følgende syntakser, avhengig av om du vil slippe en eller flere kolonner.

alter table table_name drop column column_name;alter table table_name drop (column_name1, column_name2);

Slippe en kolonne fra en tabell vil føre til at alle ubrukte kolonner i den tabellen slippes samtidig.

Hensyn

Hvis du slipper en kolonne, kan det hende at du ikke får mer brukbar ledig plass i blokken. Hvis kolonnen er liten, får du bare små biter av plass i hver blokk som kanskje ikke kan brukes igjen. Den eneste måten dette frigjøres for gjenbruk er å bygge om / flytte bordet. Det er mer effektivt å merke kolonnen som ubrukelig, og deretter bygge tabellen på nytt. Som standard er ikke et trekk en onlineoperasjon.

alter table table_name set unused (column_name);alter table table_name move;

I senere databaseversjoner kan flyttingen utføres online.

alter table table_name set unused (column_name);alter table table_name move online;

Håper dette hjelper. Hilsen Tim …

Tilbake til toppen.

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *