Oracle: Tablespace
Ein Tablespace ist eine logische Einheit zum Speichern von Datenobjekten (z. B. Tabellen). Ein Tablespace muss aus mindestens einem und kann aus mehreren Datafiles bestehen. Ein Tablespace kann vergrößert werden, indem ein Datafile angehängt oder vergrößert wird. Ein einmal zugeordnetes Datafile kann nicht mehr entfernt werden. Es gibt nur die Möglichkeit, alle Tabellen und sonstigen Objekte aus diesem Tablespace zu entfernen, den Tablespace als Ganzes zu löschen (DROP) und neu zu erstellen.
Es gibt Standard Tablespaces mit besonderer Funktion:
- SYSTEM = für Systemobjekte
- SYSAUX = ab 10g für bestimmte Systemobjekte (z. B. Statspack, Advisor, Scheduler)
- TEMP = temporär verwendeter Bereich für Sortierungen
- UNDO = ab 9i, Name kann abweichen, dient der Speicherung von Rollback-Informationen
- USERS = für die Benutzer
Zusätzlich können individuelle Tablespaces für Benutzerdaten angelegt werden. Für verschiedene Aufgabenbereiche können spezifische Tablespaces erstellt werden, um die Datenbank zu strukturieren.
Jeder Benutzer bekommt einen Tablespace zugewiesen, in dem er seine Objekte ablegen darf. Benutzerdaten sollten nicht im SYSTEM-Tablespace sondern in einem Benutzer-Tablespace abgelegt werden.
Tablespaces können auf Read-Only gesetzt werden, um Datenänderungen zu verhindern. Dies kann z. B. für historische Daten sinnvoll sein. Ein Read-Only-Tablespace kann auch wieder in den Schreibmodus versetzt werden.
Die Verfügbarkeit von Tablespaces kann Online (Standard) und Offline sein. Ein Tablespace kann z. B. offline gesetzt werden, um ein Backup durchzuführen oder bestimmte Daten nicht zugreifbar zu machen.
Dictionary-Views zu Tablespaces
Bearbeitenselect * from v$tablespace; select * from dba_tablespaces;
Zuordnung der Datafiles zu TS
select tablespace_name, file_name, bytes from dba_data_files order by tablespace_name, file_name
Datafiles vom Temp-Tablespace
select tablespace_name, file_name, bytes from dba_temp_files