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.
Die Namen der Tablespaces müssen gleich bleiben, deswegen wird ein Interims-Tablespace angelegt, der danach wieder gelöscht wird
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;
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;
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;
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;
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.