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.