Tabellenspalten lassen sich nicht löschen

Derzeit arbeite ich intensiv an einem spannenden Projekt, das in Kürze online sein wird. Daher bleibt mir vorerst nur wenig Zeit zum Bloggen, aber für einen kurzen Artikel reicht es heute!

Szenario:

Bei einer Tabelle wird versucht, eine Spalte zu löschen. Dies endet mit der Fehlermeldung:

ORA-39726: unsupported add/drop column operation on compressed tables

Die Fehlermeldung gibt einen Hinweis darauf, daß die Tabelle mit Datenkompression versehen ist. Der Versuch, die Tabelle zu dekomprimieren und danach die Spalten zu löschen schlägt aber auch fehl! Hier ein Beispiel zum Nachtesten:

CREATE TABLE aerger(c1 NUMBER, u1 NUMBER) COMPRESS
/
ALTER TABLE aerger SET UNUSED( u1 )
/
ALTER TABLE aerger DROP UNUSED COLUMNS
/

Error at line 1
ORA-39726: unsupported add/drop column operation on compressed tables

ALTER TABLE aerger NOCOMPRESS
/
ALTER TABLE aerger DROP UNUSED COLUMNS
/

Error at line 1
ORA-39726: unsupported add/drop column operation on compressed tables

Das Beispiel könnte man auch abkürzen und den Weg über „set unused“ gar nicht verwenden; auch ein direktes „Drop“ geht nach einer Kompression nicht mehr.

Ist das nun ein Bug? Laut dem Artikel 1068820.1 der Oracle Knowledge Base nicht: In 10g ist dies das erwartete Verhalten. Es gab einen Bug in 10.2.0.3, der eine Löschung ermöglichte, was aber nicht dem erwarteten Verhalten entsprach.

Lösungsansätze:

  • Unused Colums belassen, wie sie sind.
  • Tabelle mit „create table as select“ neu anlegen.
  • Upgrade auf Oracle 11g .

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s