8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Diverse | PL / SQL | SQL | RAC | WebLogic | Linux
Hjem “Artikler” 8i “Her
Oracle 8i introducerede muligheden for at droppe en kolonne fra en tabel. Før dette var det nødvendigt at droppe hele tabellen og genopbyg den. Nu kan du markere en kolonne som ubrugt (logisk sletning) eller slette den fuldstændigt (fysisk sletning).
- Logisk sletning
- Fysisk sletning
- Overvejelser
Logisk sletning
På store tabeller kan processen med fysisk fjernelse af en kolonne være meget tidskrævende og ressourcekrævende. Af denne grund kan du beslutte at 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 kolonnerne ikke længere være synlige for brugeren. Hvis du på et senere tidspunkt har tid til fysisk at slette kolonnerne, kan dette gøres ved hjælp af følgende.
alter table table_name drop unused columns;
På store tabeller kan du reducere antallet af fortrydelseslogfiler, der er akkumuleret ved hjælp af CHECKPOINT-indstillingen, der tvinger et kontrolpunkt efter det angivne antal rækker er blevet behandlet.
DBA_UNUSED_COL_TABS
-visningen kan bruges til at se antallet af ubrugte kolonner pr. tabel.
Fysisk sletning
For fysisk at droppe en kolonne kan du bruge en af følgende syntakser, afhængigt af om du vil slippe en enkelt 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 tabel får alle ubrugte kolonner til at tabe på samme tid.
Overvejelser
At slippe en kolonne resulterer muligvis ikke i yderligere anvendelig ledig plads i blokken. Hvis søjlen er lille, får du kun små stykker plads i hver blok, der muligvis ikke kan genbruges. Den eneste måde dette frigøres til genbrug er at genopbygge / flytte bordet. Det er mere effektivt at markere kolonnen som ubrugelig og derefter genopbygge tabellen. Som standard er et træk ikke en onlinehandling.
alter table table_name set unused (column_name);alter table table_name move;
I senere databaseversioner kan flytningen udføres online.
alter table table_name set unused (column_name);alter table table_name move online;
Håber dette hjælper. Hilsen Tim …
Tilbage til toppen.