8i | 9i | 10 g | 11 g | 12c | 13c | 18c | 19c | 21c | Různé | PL / SQL | SQL | RAC | WebLogic | Linux
Domů „Články“ 8i „Zde
Oracle 8i představil možnost přetažení sloupce z tabulky. Před tím bylo nutné zrušit celou tabulku a znovu jej sestavit. Nyní můžete sloupec označit jako nepoužívaný (logické mazání) nebo jej můžete smazat úplně (fyzické mazání).
- Logické mazání
- Fyzické mazání
- Úvahy
Logické mazání
Na velkých tabulkách může být proces fyzického odstranění sloupce velmi časově i zdrojově náročný. Z tohoto důvodu se můžete rozhodnout logicky smazat it.
alter table table_name set unused (column_name);alter table table_name set unused (column_name1, column_name2);
Jakmile to uděláte, sloupce již nebudou uživateli viditelné. Pokud budete mít později čas sloupce fyzicky smazat, můžete lze provést pomocí následujícího postupu.
alter table table_name drop unused columns;
U velkých tabulek můžete snížit množství zpětně zaznamenaných protokolů pomocí možnosti CHECKPOINT, která vynutí kontrolní bod po zadaném počtu řádky byly zpracovány.
Zobrazení DBA_UNUSED_COL_TABS
lze použít k zobrazení počtu nevyužitých sloupců v tabulce.
Fyzické odstranění
Chcete-li fyzicky vypustit sloupec, můžete použít jednu z následujících syntaxí podle toho, zda chcete zrušit jeden nebo více sloupců.
alter table table_name drop column column_name;alter table table_name drop (column_name1, column_name2);
Přetažení sloupec z tabulky způsobí, že všechny nepoužité sloupce v této tabulce budou zrušeny současně.
Úvahy
Vynechání sloupce nemusí mít za následek další využitelné volné místo v bloku. Pokud je sloupec malý, v každém bloku získáte jen malé kousky prostoru, které nemusí být znovu použitelné. Jediným způsobem, jak to bude uvolněno pro opětovné použití, je přestavět / přesunout stůl. Je efektivnější označit sloupec jako nepoužitelný a poté tabulku znovu sestavit. Ve výchozím nastavení není přesun operace online.
alter table table_name set unused (column_name);alter table table_name move;
V pozdějších verzích databáze lze operaci přesunu provést online.
alter table table_name set unused (column_name);alter table table_name move online;
Doufám, že to pomůže. S pozdravem Tim …
Zpět nahoru.