Möglichkeiten die Datendatei eines temporären Tablespace zu verschieben bzw. umzubenennen

06.
Januar
2007
Veröffentlicht von: Matthias Meyer

Sie wollen Ihre temporäre(n) Datendatei(en) verschieben, wissen aber nicht wie? Dann erfahren Sie im folgenden Artikel, welche Möglichkeiten es dafür gibt.

Sie wollen Ihre temporäre(n) Datendatei(en) verschieben, wissen aber nicht wie? Dann erfahren Sie im folgenden Artikel, welche Möglichkeiten es dafür gibt.

Da das Vorgehen davon abhängig ist, welche Art der Tablespace-Verwaltung verwendet wird, gilt es zunächst einmal dies zu klären. Dazu setzen Sie folgenden Befehl ab:

SELECT tablespace_name, extent_management
       FROM dba_tablespaces
      WHERE contents = 'TEMPORARY';

Gibt die Spalte extent_management den Wert DICTIONARY zurück, gehen Sie wie in Fall 1 beschrieben vor. Wird der Wert LOCAL zurückgegeben, ist Fall 2 relevant.

Hinweis:

Spätestens ab Version 10g sollten Sie auf jeden Fall zur locally managed Tablespace-Verwaltung wechseln!


Fall 1: Verschieben/ Umbenennen einer dictionary managed Datendatei

Falls es sich hierbei um den DEFAULT TEMPORARY TABLESPACE handelt (ab Version 9i verfügbar), erhält man den Fehler ORA-12905. Dann muss der Datenbank zunächst ein anderer DEFAULT TEMPORARY TABLESPACE zugewiesen werden über:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE <tmp_neu>;

Falls es nicht um den DEFAULT TEMPORARY TABLESPACE handelt, wird der Tablespace als erstes offline gesetzt:

ALTER TABLESPACE <temp_tbs> OFFLINE;

Bevor der Datenbank der neue Ort und/oder Name der Datei bekannt gegeben werden kann, muss die Datei auf Betriebssystemebene verschoben bzw. umbenannt werden.

HOST copy <alte_datei> <neue_datei> 

ALTER DATABASE RENAME FILE '<alte_datei>' TO '<neue_datei>';

ALTER TABLESPACE <temp_tbs> ONLINE;


Fall 2: Verschieben/ Umbenennen einer locally managed Datendatei

Das Vorgehen aus Fall 1 wird bei einer locally managed angelegten Datendatei zu folgenden Fehlermeldungen führen:

ALTER TABLESPACE <tbs_name> OFFLINE;

ORA-03217: Ungültige Option zur Änderung von TEMPORARY TABLESPACE

ALTER DATABASE RENAME FILE '<alte_datei>' TO '<neue_datei>';

ORA-01511: Fehler beim Umbenennen von Log-Dateien/Datendateien ...

Dem Administrator stehen in diesem Fall zwei Lösungsmöglichkeiten zur Verfügung:


Lösung 1

Falls es sich nicht um den DEFAULT TEMPORARY TABLESPACE handelt, den Tablespace löschen, neu anlegen und bei der Angabe der Datendatei den neuen Speicherort mitteilen.

DROP TABLESPACE <temp_tbs>
     /* zusätzlich ab 9i möglich */ INCLUDING CONTENTS AND DATAFILES;

CREATE TEMPORARY TABLESPACE <temp_tbs> TEMPFILE '<neue_datei>'
       SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE 1000M
       EXTENT MANAGEMENT LOCAL /* Standard ab 9i */;


Lösung 2

Die alte Datendatei löschen und dem Tablespace eine neue zuweisen. Diese Lösung ist auch beim DEFAULT TEMPORARY TABLESPACE zulässig.

ALTER DATABASE TEMPFILE <alte_datei> DROP
     /* zusätzlich ab 9i möglich */ INCLUDING DATAFILES;

ALTER TABLESPACE <temp_tbs> ADD TEMPFILE '<neue_datei>' SIZE 50M
     AUTOEXTEND ON NEXT 10M MAXSIZE 1000M;


Weitere Tipps zu temporären Tablespaces

  • Eine der oben beschriebenen Lösungen zu Fall 2 ist auch anzuwenden, falls die temporäre Datendatei sehr groß geworden ist und wieder verkleinert werden soll.

  • Locally managed Tablespaces sind beim Backup nicht mehr zu sichern. In einem Wiederherstellungsfall inklusive OPEN RESETLOGS sind möglicherweise die temporären Datendateien auf Datenbankebene gelöscht worden. Falls nun Sortieroperationen auf dem Temp-Tablespace auszuführen sind, führt dies zum Fehler ORA-25153: Temporärer Tablespace ist leer. Dann ist nach Lösung 2 eine neue Datendatei zu erzeugen.
DBA

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.