Kein Problem, hierfür gibt es den allseits bekannten und beliebten Befehl:
alter database rename file 'von Quelle' to 'Ziel'
Das Ganze funktioniert prima einfach wenn man die DB im Mountstatus hat und vorher alle Dateien an den neuen Zielort kopiert hat (move kommt für einen an Sicherheit denkenden Admin nicht in Frage, also Original stehen lassen und kopieren - aufräumen erst wenns wirklich funktioniert :-) ). Alternativ gehts auch, wenn man einzelne Tablespaces offline nimmt, den Copy und Rename durchführt und den Tablespace wieder online nimmt.
Wenn es nun aber um den Temp-Tablespace geht scheiden sich die Geister.
Man liest oft, dass es nicht so geht wie bei Tablespace Datendateien und dann alternative Lösungen wie etwa zusätzliche Tempfiles, Neuanlage Temp-Tablespace usw.
All diese Lösungen funktionieren und haben ihre Vorteile.
Da ich aber die Datenbank eh im Mount Status habe (auch Undo und System müssen umgezogen werden) interessierte es mich, ob es nicht doch auch beim Temptablespace so ginge - wäre doch praktisch eine Vorgehensweise durchziehen zu können.
Und siehe da: es funktioniert (zumindest ab 10.2 -> Doku).
SQL> startup mount ... SQL> alter database rename file
'/mein/verzeichnis/temp01.dbf' to
'/mein/verzeichnis/unterverzeichnis/temp01.dbf'; database altered SQL> alter database open ...
Spannend ist das nicht - aber praktisch.
Interessant ist nun, dass man das Ziel auch zu kopieren vergessen kann... es taucht von selbst an der neuen Stelle auf.
Hat man zwei Tempfiles im Temptablespace, so kann man diese alternierend Offline nehmen, kopieren, umbenennen und wieder online nehmen.
Auch das hat einwandfrei funktioniert.
Keine Kommentare:
Kommentar veröffentlichen