Undo und Temp - Tablespace verkleinern

05.
Juli
2006

Viele Administratoren kennen das Problem, zu wenig Platz auf ihren Platten zur Verfügung zu haben und daher kurzfristig Platz frei machen zu müssen. Da fällt einem dann sofort der Undo und Temp Tablespace ein, die eigentlich immer zu groß sind. Kann man diese aber überhaupt verkleinern?

Viele Administratoren kennen das Problem, zu wenig Platz auf ihren Platten zur Verfügung zu haben und daher kurzfristig Platz frei machen zu müssen. Da fällt einem dann sofort der Undo und Temp Tablespace ein, die eigentlich immer zu groß sind. Kann man diese aber überhaupt verkleinern?

Nein, leider sind die beiden Tablespaces (wenn sie Locally Managed angelegt wurden) von einer Verkleinerung ausgeschlossen.

Aber wenn man schon nicht verkleinern kann, dann legt man den Tablespace einfach neu an. Es darf dazu aber niemand auf den Tabelspaces arbeiten, und es muss immer jeweils ein Tablespace zur Verfügung stehen. Man muss also einen weiteren Tablespace anlegen und die Benutzer auf diesen Tablespace umsetzen. Darauf folgend muss man nur noch warten, bis keiner mehr auf den alten Tablespaces arbeitet und kann diesen dann löschen.

  1. Es stehen zwei Alternativen zur Verfügung:
  2. Es werden neue Tablespaces mit neuen Namen angelegt, die die Funktionen der alten übernehmen

Die Namen der Tablespaces müssen gleich bleiben, deswegen wird ein Interims-Tablespace angelegt, der danach wieder gelöscht wird

Alternative 1 für Temp-Tablespace:

CREATE TEMPORARY TABLESPACE temp2 TEMPFILE 'c:\oracle\oradata\o10g\temp02.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 1900M;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;

REM Eine gewisse Zeit warten, bis alle Sortieroperation auf dem alten
REM Tablespace abgeschlossen sind

DROP TABLESPACE temp;

 

Alternative 1 für Undo-Tablespace:

CREATE UNDO TABLESPACE undotbs2 DATAFILE 'c:\oracle\oradata\o10g\undo02.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 1900M;

ALTER SYSTEM SET undo_tablespace='undotbs2';

REM Eine gewisse Zeit warten, bis alle Undooperation auf dem alten
REM Tablespace abgeschlossen sind

DROP TABLESPACE undotbs;

 

Alternative 2 für Temp-Tablespace:

CREATE TEMPORARY TABLESPACE temp_interims
TEMPFILE 'c:\oracle\oradata\o10g\temp_inter.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 900M REUSE;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_interims;

REM Eine gewisse Zeit warten, bis alle Sortieroperation auf dem alten
REM Tablespace abgeschlossen sind

DROP TABLESPACE temp;

REM Jetzt einen Tablespace mit dem alten Namen anlegen

CREATE TEMPORARY TABLESPACE temp
TEMPFILE 'c:\oracle\oradata\o10g\temp01.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 1900M REUSE;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

REM Eine gewisse Zeit warten, bis alle Sortieroperation auf dem alten
REM Tablespace abgeschlossen sind

DROP TABLESPACE temp_interims;

 

Alternative 2 für Undo-Tablespace:

CREATE UNDO TABLESPACE undo_interims
DATAFILE 'c:\oracle\oradata\o10g\undo_inter.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 900M; 

ALTER SYSTEM SET undo_tablespace='undo_interims'; 

REM Eine gewisse Zeit warten, bis alle Undooperation auf dem alten
REM Tablespace abgeschlossen sind 

DROP TABLESPACE undotbs;
REM Jetzt einen Tablespace mit dem alten Namen anlegen
CREATE UNDO TABLESPACE undotbs
DATAFILE 'c:\oracle\oradata\o10g\undotbs01.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 900M; 

ALTER SYSTEM SET undo_tablespace='undotbs';
 
REM Eine gewisse Zeit warten, bis alle Undooperation auf dem alten
REM Tablespace abgeschlossen sind 

DROP TABLESPACE undo_interims;

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.