Kolommen laten vallen

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

Home “Artikelen” 8i “Hier

Oracle 8i introduceerde de mogelijkheid om een kolom uit een tabel te verwijderen. Hiervoor was het nodig om de hele tabel te verwijderen en herbouw het. Nu kunt u een kolom markeren als ongebruikt (logisch verwijderen) of volledig verwijderen (fysiek verwijderen).

  • Logisch verwijderen
  • Fysiek verwijderen
  • Overwegingen

Logisch verwijderen

Bij grote tafels kan het proces van het fysiek verwijderen van een kolom erg tijdrovend en veel middelen in beslag nemen. Om deze reden zou je kunnen besluiten om logisch te verwijderen het.

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

Zodra dit is gebeurd, zijn de kolommen niet langer zichtbaar voor de gebruiker. Als u op een later tijdstip de tijd heeft om de kolommen fysiek te verwijderen, kan dit worden gedaan met behulp van het volgende.

alter table table_name drop unused columns;

Op grote tabellen kunt u het aantal ongedaan gemaakte logs verminderen dat is verzameld door de optie CHECKPOINT te gebruiken die een controlepunt afdwingt na het opgegeven aantal rijen zijn verwerkt.

De DBA_UNUSED_COL_TABS weergave kan worden gebruikt om het aantal ongebruikte kolommen per tabel te bekijken.

Fysiek verwijderen

Om een kolom fysiek te verwijderen, kunt u een van de volgende syntaxis gebruiken, afhankelijk van of u een enkele of meerdere kolommen wilt verwijderen.

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

Een verwijderen kolom uit een tabel zorgt ervoor dat alle ongebruikte kolommen in die tabel tegelijkertijd worden verwijderd.

Overwegingen

Het verwijderen van een kolom leidt mogelijk niet tot extra bruikbare vrije ruimte in het blok. Als de kolom klein is, krijgt u slechts kleine brokjes ruimte in elk blok die mogelijk niet herbruikbaar zijn. De enige manier waarop dit wordt vrijgemaakt voor hergebruik, is door de tabel opnieuw op te bouwen / te verplaatsen. Het is efficiënter om de kolom als onbruikbaar te markeren en vervolgens de tabel opnieuw op te bouwen. Standaard is een verplaatsing geen online operatie.

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

In latere databaseversies kan de verplaatsing online worden gedaan.

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

Ik hoop dat dit helpt. Met vriendelijke groet Tim …

Terug naar de top.

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *