Släppande kolumner

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

Hem ”Artiklar” 8i ”Här

Oracle 8i introducerade möjligheten att släppa en kolumn från en tabell. Innan detta var det nödvändigt att släppa hela tabellen och bygga om den. Nu kan du markera en kolumn som oanvänd (logisk radering) eller radera den helt (fysisk radering).

  • Logisk radering
  • Fysisk radering
  • Överväganden

Logiskt radera

På stora tabeller kan processen att fysiskt ta bort en kolumn vara mycket tidskrävande och resurskrävande. Av detta skäl kan du besluta att logiskt radera det.

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

När detta är gjort kommer kolumnerna inte längre att vara synliga för användaren. Om du vid ett senare tillfälle har tid att fysiskt radera kolumnerna kan detta görs med följande.

alter table table_name drop unused columns;

På stora tabeller kan du minska mängden ångrade loggar som ackumulerats genom att använda alternativet CHECKPOINT som tvingar en kontrollpunkt efter det angivna antalet rader har bearbetats.

DBA_UNUSED_COL_TABS kan användas för att visa antalet oanvända kolumner per tabell.

Fysisk radering

För att fysiskt släppa en kolumn kan du använda en av följande syntaxer, beroende på om du vill släppa en enstaka eller flera kolumner.

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

Släppa en kolumn från en tabell kommer att leda till att alla oanvända kolumner i den tabellen tappas samtidigt.

Överväganden

Att tappa en kolumn leder kanske inte till ytterligare användbart ledigt utrymme i blocket. Om kolumnen är liten får du bara små bitar av utrymme i varje block som kanske inte kan återanvändas. Det enda sättet detta frigörs för återanvändning är att bygga om / flytta bordet. Det är mer effektivt att markera kolumnen som oanvändbar och sedan bygga om tabellen. Som standard är ett drag inte en onlineoperation.

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

I senare databasversioner kan flyttningen utföras online.

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

Hoppas det hjälper. Hälsningar Tim …

Tillbaka till början.

Leave a Reply

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *