Porzucanie kolumn

8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Różne | PL / SQL | SQL | RAC | WebLogic | Linux

Strona główna „Artykuły” 8i „Tutaj

Oracle 8i wprowadził możliwość usuwania kolumny z tabeli. Wcześniej konieczne było usunięcie całej tabeli i odbuduj go. Teraz możesz oznaczyć kolumnę jako nieużywaną (usunięcie logiczne) lub całkowicie ją usunąć (usunięcie fizyczne).

  • Usuń logiczne
  • Usuń fizycznie
  • Rozważania

Logiczne usuwanie

W przypadku dużych tabel proces fizycznego usuwania kolumny może być bardzo czasochłonny i zasobochłonny. Z tego powodu możesz zdecydować się na logiczne usunięcie

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

Gdy to zrobisz, kolumny nie będą już widoczne dla użytkownika. Jeśli w późniejszym czasie będziesz mieć czas na fizyczne usunięcie kolumn, można wykonać w następujący sposób.

alter table table_name drop unused columns;

W przypadku dużych tabel można zmniejszyć ilość cofniętych dzienników zgromadzonych za pomocą opcji PUNKT KONTROLNY, która wymusza punkt kontrolny po określonej wiersze zostały przetworzone.

Widok DBA_UNUSED_COL_TABS może służyć do wyświetlania liczby nieużywanych kolumn w tabeli.

Fizyczne usuwanie

Aby fizycznie usunąć kolumnę, możesz użyć jednej z następujących składni, w zależności od tego, czy chcesz usunąć jedną, czy wiele kolumn.

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

Porzucenie kolumna z tabeli spowoduje, że wszystkie nieużywane kolumny w tej tabeli zostaną usunięte w tym samym czasie.

Uwagi

Usunięcie kolumny może nie skutkować dodatkowym użytecznym wolnym miejscem w bloku. Jeśli kolumna jest mała, w każdym bloku otrzymasz tylko małe fragmenty miejsca, które mogą nie nadawać się do ponownego wykorzystania. Jedynym sposobem, w jaki zostanie to zwolnione do ponownego wykorzystania, jest odbudowanie / przeniesienie tabeli. Bardziej wydajne jest oznaczenie kolumny jako nieużywalnej, a następnie odbudowanie tabeli. Domyślnie przenoszenie nie jest operacją online.

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

W nowszych wersjach bazy danych operację przenoszenia można wykonać online.

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

Mam nadzieję, że to pomoże. Pozdrawiam Tim …

Powrót na górę

Leave a Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *