Die Antworten der vorherigen Poster sind alle in Bezug auf die Syntax zum Erstellen eines neuen UNDO-Tabellenbereichs und zum Umschalten des Systems auf den neuen UNDO-Tabellenbereich korrekt.
In der Oracle-Dokumentation heißt es, dass die folgende Anweisung in den neuen UNDO-Tabellenbereich wechselt:
ALTER SYSTEM SET UNDO_TABLESPACE = <name of new UNDO TS>;
zB für @Mohammad Jolani:
ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS20140508;
Es gibt jedoch einige Einschränkungen für diese Umschaltung, die wie folgt dokumentiert sind:
Die Switch-Operation wartet nicht darauf, dass Transaktionen im alten Undo-Tablespace festgeschrieben werden. Wenn im alten Rückgängig-Tabellenbereich ausstehende Transaktionen vorhanden sind, wechselt der alte Rückgängig-Tabellenbereich in den Modus PENDING OFFLINE (Status). In diesem Modus können vorhandene Transaktionen weiterhin ausgeführt werden, Rückgängig-Datensätze für neue Benutzertransaktionen können jedoch nicht in diesem Rückgängig-Tabellenbereich gespeichert werden. In diesem PENDING OFFLINE-Modus kann ein Undo-Tablespace vorhanden sein, auch nachdem der Switch-Vorgang erfolgreich abgeschlossen wurde. Ein PENDING OFFLINE-Undo-Tablespace kann weder von einer anderen Instanz verwendet noch gelöscht werden. Nachdem alle aktiven Transaktionen festgeschrieben wurden, wechselt der Undo-Tabellenbereich schließlich automatisch vom PENDING OFFLINE-Modus in den OFFLINE-Modus. Von da an ist der Undo-Tablespace für andere Instanzen verfügbar (in einer Oracle Real Application Cluster-Umgebung).
Laut A PENDING OFFLINE kann der Undo-Tablespace weder von einer anderen Instanz verwendet noch gelöscht werden. Sie müssten warten, bis Oracle den aktuellen UNDO-Tabellenbereich vollständig umgestellt hat.
Versuchen Sie, den Status des Tablespace abzufragen mit:
select file#, ts#, status, bytes, substr(name, 0, 30) from v$datafile;
Möglicherweise wird Ihr alter UNDO-Tabellenbereich noch verwendet oder befindet sich im PENDING OFFLINE
Status.
Sie können auch versuchen, die UNDO-Tablespaces hin und her zu wechseln, mit:
ALTER SYSTEM SET UNDO_TABLESPACE = '';
In diesem PENDING OFFLINE-Modus kann ein Undo-Tablespace vorhanden sein, auch nachdem der Switch-Vorgang erfolgreich abgeschlossen wurde. Ein PENDING OFFLINE-Undo-Tablespace kann weder von einer anderen Instanz verwendet noch gelöscht werden. Nachdem alle aktiven Transaktionen festgeschrieben wurden, wechselt der Undo-Tabellenbereich schließlich automatisch vom PENDING OFFLINE-Modus in den OFFLINE-Modus. Von da an ist der Undo-Tablespace für andere Instanzen verfügbar (in einer Oracle Real Application Cluster-Umgebung). Wenn der Parameterwert für UNDO TABLESPACE auf '' (zwei einfache Anführungszeichen) gesetzt ist, wird der aktuelle Undo-Tablespace ausgeschaltet und der nächste verfügbare Undo-Tablespace eingeschaltet. Verwenden Sie diese Anweisung mit Vorsicht, da kein Undo-Tablespace verfügbar ist wird das SYSTEM-Rollback-Segment verwendet.
Sie können das Umschalten nur erzwingen, wenn Sie Ihre Datenbank herunterfahren. Wenn Oracle glaubt, dass es noch den alten UNDO TS benötigt, dann sei es so. Ihr System schreibt bereits an das neue UNDO TS, sodass Sie nichts erzwingen müssen, es sei denn, Sie haben spezielle Anforderungen.