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.