Wir haben Oracle 11gR1 RAC zwei Instanzen auf zwei verschiedenen Servern, neuer Undo-Tablespace UNDOTBS20140508 erstellt 30G, ich möchte die alte UNDOTBSX02 entfernen , ich habe Folgendes getan:
CREATE UNDO TABLESPACE UNDOTBS20140508 DATAFILE '+DATA/....../UNDOTBS20140508' SIZE 20G;
ALTER SYSTEM SET UNDO_TABLESPACE = UNDOTBS20140508;
DROP TABLESPACE UNDOTBSX02 INCLUDING CONTENTS AND DATAFILES;
Beim Versuch, UNDOTBSX02 zu löschen , wird der folgende Fehler angezeigt :
Error starting at line : 13 in command - DROP TABLESPACE UNDOTBSX02 INCLUDING CONTENTS AND DATAFILES Error report - SQL Error: ORA-00604: error occurred at recursive SQL level 1 ORA-06502: PL/SQL: numeric or value error ORA-06512: at line 57 ORA-30013: undo tablespace 'UNDOTBSX02' is currently in use 00604. 00000 - "error occurred at recursive SQL level %s" *Cause: An error occurred while processing a recursive SQL statement (a statement applying to internal dictionary tables). *Action: If the situation described in the next error on the stack can be corrected, do so; otherwise contact Oracle Support.
Ich habe UNDOTBSX02 auf ausstehende Transaktionen überprüft und sie sind leer. Also, wie man es fallen lässt?
Hinweis : Ich bin kein Oracle DBA, muss diese Aufgabe jedoch ausführen.
oracle
oracle-11g
rac
Mohammad Jolani
quelle
quelle
Antworten:
Ich habe die obigen Vorschläge ausprobiert, aber es hat nicht funktioniert, z. B. hat Select SQL keine Ergebnisse erzielt, und ich kann den Undo-Tabellenbereich immer noch nicht löschen. Das grundlegende Problem besteht darin, dass der alte Undo-Tabellenbereich in Oracle weiterhin als Undo registriert ist. Daher müssen wir ihn in den neuen Undo-Tabellenbereich ändern.
Folgendes habe ich getan und es hat funktioniert:
hoffe das hilft.
quelle
scope=both
seineralter system
Aussage die Option hinzu , die die Art und Weise ändern könnte, wie Orakel auf die Änderung reagiert.scope=both
standardmäßig ändern . Sie müssen explizit angebenscope=spfile
oderscope=memory
wenn Sie den Parameter ändern möchten, nur an einer Stelle.Die Fehlermeldung bedeutet, dass das
tablespace
verwendet wird. Da das Rückgängigmachentablespace
kritisch isttablespace
, müssen Sie es zuerst herunterfahren, indem Sie Folgendes verwenden:Beenden Sie dann die SID für den Undo-Tablespace mit
Jetzt solltest du es fallen lassen können.
quelle
Sie möchten keine Verbindungen trennen. Woher wissen Sie, was diese Verbindungen tun und was möglicherweise unterbrochen wird, wenn diese Verbindungen getrennt werden?
Warten Sie besser, bis die Sitzungen den neuen Tabellenbereich verwenden. Schließlich wird der alte Undo-Tablespace nicht mehr verwendet. Zu diesem Zeitpunkt können Sie es fallen lassen. Wenn Sie Speicherplatz benötigen, können Sie versuchen, den Undo-Tabellenbereich zu verkleinern. Dies funktioniert jedoch möglicherweise nicht. Sie können auch Ausfallzeiten erhalten, um die Datenbank herunterzufahren, die Datenbank im Einschränkungsmodus aufzurufen und dann den alten Undo-Tabellenbereich zu löschen, der die Datenbank herunterfährt und uneingeschränkt startet.
quelle
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:
zB für @Mohammad Jolani:
Es gibt jedoch einige Einschränkungen für diese Umschaltung, die wie folgt dokumentiert sind:
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:
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:
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.
quelle
Sah diesen Link zur Lösung. Es hat bei mir funktioniert!
Entsprechende Rollback-Segmente müssen offline sein, bevor Sie den Tablespace löschen können.
Außerdem muss die Datenbank neu gestartet werden, bevor neue Parameterwerte wirksam werden.
quelle