Spalten löschen

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

Home „Artikel“ 8i „Hier

Oracle 8i führte die Möglichkeit ein, eine Spalte aus einer Tabelle zu löschen. Zuvor musste die gesamte Tabelle gelöscht werden Jetzt können Sie eine Spalte als unbenutzt markieren (logisches Löschen) oder vollständig löschen (physisches Löschen).

  • Logisches Löschen
  • Physisches Löschen
  • Überlegungen

Logisches Löschen

Bei großen Tabellen kann das physische Entfernen einer Spalte sehr zeit- und ressourcenintensiv sein. Aus diesem Grund können Sie sich für das logische Löschen entscheiden it.

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

Sobald dies erledigt ist, sind die Spalten für den Benutzer nicht mehr sichtbar. Wenn Sie zu einem späteren Zeitpunkt Zeit haben, die Spalten physisch zu löschen, kann dies möglich sein Gehen Sie wie folgt vor:

alter table table_name drop unused columns;

In großen Tabellen können Sie die Anzahl der rückgängig gemachten Rückgängig-Protokolle reduzieren, indem Sie die Option CHECKPOINT verwenden, die einen Prüfpunkt nach der angegebenen Anzahl von erzwingt Zeilen wurden verarbeitet.

In der Ansicht DBA_UNUSED_COL_TABS kann die Anzahl der nicht verwendeten Spalten pro Tabelle angezeigt werden.

Physisches Löschen

Um eine Spalte physisch zu löschen, können Sie eine der folgenden Syntaxen verwenden, je nachdem, ob Sie eine einzelne oder mehrere Spalten löschen möchten.

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

Löschen von a Eine Spalte aus einer Tabelle führt dazu, dass alle nicht verwendeten Spalten in dieser Tabelle gleichzeitig gelöscht werden.

Überlegungen

Das Löschen einer Spalte führt möglicherweise nicht zu zusätzlichem nutzbarem freien Speicherplatz im Block. Wenn die Spalte klein ist, erhalten Sie in jedem Block nur kleine Speicherbereiche, die möglicherweise nicht wiederverwendbar sind. Die einzige Möglichkeit, dies für die Wiederverwendung freizugeben, besteht darin, die Tabelle neu zu erstellen / zu verschieben. Es ist effizienter, die Spalte als unbrauchbar zu markieren und dann die Tabelle neu zu erstellen. Standardmäßig ist eine Verschiebung keine Online-Operation.

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

In späteren Datenbankversionen kann die Verschiebung online ausgeführt werden.

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

Hoffe, das hilft. Grüße Tim …

Zurück zum Anfang.

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.