LOCAL Primary Key wird nach CONSTRAINT DISABLE/ENABLE GLOBAL angelegt

von Tobias Redmann

Um eine partitionierte Tabelle mit Daten zu füllen, habe ich alle Indizes sowie alle Constraints dieser Tabelle deaktiviert (DISABLE). Nachdem alle Daten eingefügt wurden, wurden mittels ALTER TABLE XXX ENABLE CONSTRAINT YYY die entsprechenden CONSTRAINTS wieder angeschaltet (ENABLE).

Dabei ist mir aufgefallen, dass der zuvor angelegte local Primary Key Constraint nun global angelegt wurde.

Ein kleines Beispiel verdeutlicht dieses Verhalten

Getestet wurde dieses Scripte auf einer Oracle 11gR2 Datenbank.

Warum verhält sich die ORACLE DB so?

Auf diversen Foren im Internet konnte ich folgende Begründung finden. ORACLE löscht den bei der Erstellung des Constraints automatisch erstellten UNIQUE INDEX beim Auschalten (DISABLE) des Primary Key Constraint.
Das hat zur Folge, dass die Storageoptionen (LOCAL + Partitioninformationen) verloren gehen!

Diese Verhalten ist, wenn man es nicht weiß, extrem gefährlich und kann u.U. das Laufzeitverhalten seiner DB negativ beeinflussen. Nicht umsonst wurde im Vorfeld bewusst ein local Primary Keys Constraint angelegt.

Wie kann ich dieses Verhalten umgehen?

Leider hilft hier nur den Primary Key Constraint zu löschen und diesen dann nach dem Datenimport wieder neu zu erstellen.

SCHREIBEN SIE EINEN KOMMENTAR