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 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.
- Es stehen zwei Alternativen zur Verfügung:
- 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\o18c\temp02.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 1900M;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;
Eine gewisse Zeit warten, bis alle Sortieroperationen auf dem alten Tablespace abgeschlossen sind
DROP TABLESPACE temp;
Alternative 1 für Undo-Tablespace:
CREATE UNDO TABLESPACE undotbs2 DATAFILE 'c:\oracle\oradata\o18c\undo02.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 1900M;
ALTER SYSTEM SET undo_tablespace='undotbs2';
Eine gewisse Zeit warten, bis alle Undooperationen auf dem alten Tablespace abgeschlossen sind
DROP TABLESPACE undotbs;
Alternative 2 für Temp-Tablespace:
CREATE TEMPORARY TABLESPACE temp_interims
TEMPFILE 'c:\oracle\oradata\o18c\temp_inter.dbf'
SIZE 1G AUTOEXTEND ON MAXSIZE 2G REUSE;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_interims;
Eine gewisse Zeit warten, bis alle Sortieroperationen auf dem alten Tablespace abgeschlossen sind
DROP TABLESPACE temp;
Jetzt einen Tablespace mit dem alten Namen anlegen
CREATE TEMPORARY TABLESPACE temp
TEMPFILE 'c:\oracle\oradata\o18c\temp01.dbf'
SIZE 1000M AUTOEXTEND ON MAXSIZE 1900M REUSE;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;
Eine gewisse Zeit warten, bis alle Sortieroperationen auf dem alten Tablespace abgeschlossen sind
DROP TABLESPACE temp_interims;
Alternative 2 für Undo-Tablespace:
CREATE UNDO TABLESPACE undo_interims
DATAFILE 'c:\oracle\oradata\o18c\undo_inter.dbf'
SIZE 1G AUTOEXTEND ON MAXSIZE 2G;
ALTER SYSTEM SET undo_tablespace='undo_interims';
Eine gewisse Zeit warten, bis alle Undooperationen auf dem alten 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 1G AUTOEXTEND ON MAXSIZE 2G;
ALTER SYSTEM SET undo_tablespace='undotbs';
Eine gewisse Zeit warten, bis alle Undooperationen auf dem alten
Tablespace abgeschlossen sind
DROP TABLESPACE undo_interims;