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!
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;
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:
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 */;
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;
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.