Oracle Speicherverwaltung Tutorial: Speicher-Begriffe und deren Zusammenhang Tablespace, Datei, Segment, Extent und Block
Bei der Oracle Speicherverwaltung sind zwei Ebenen zu unterscheiden:
Die logische Ebene und die physische Ebene. Die logische Ebene beschäftigt sich mit den Objekten, die üblicherweise
mit SQL behandelt werden: Tabellen, Indizes u.s.w. Diese Objekte werden in den physischen Strukturen abgelegt.
Die Begriffe der physischen Datenstrukturen sind:
Tablespace
Datendatei (data
file)
Segment
Extent
Block
Weitere Speicherstrukturen wie die control files und redo-log-files
dienen nicht der Ablage der Nutzdaten, sondern ausschließlich der Verwaltung.
Die obigen Begriffe bilden eine hierarchische Ordnung:
eine Datenbank besteht aus mehreren Tablespaces
ein Tablespace besteht aus einer oder mehreren Datendateien
in einer Datendatei sind i.a. mehrere extents
ein extent besteht aus mehreren Blöcken
Ein logisches Objekt wie eine Tabelle belegt in der physischen Struktur ein Speicher-Segment.
Ein Speichersegment besteht aus einem oder mehreren extents, die wiederum in einer Datei oder in mehreren Dateien
verteilt liegen können. Die folgende Grafik verdeutlicht die Zusammenhänge der Begriffe:
Tablespace (gestrichelter Bereich)
Datenbankdateien
(Physikalische Strukturen, die zu einem Tablespace gehören)
Objekte (Segmente)
(In Tablespaces gespeichert - können in mehreren Datendateien enthalten
sein)
Segmente werden logisch in einem Tablespace und physikalisch in Dateien gespeichert
Angabe der Speichergröße beim Anlegen des Objektes (Erster Extent
und folgende Extentgrößen)
Default Werte werden vom jeweiligen Tablespace entnommen
Konfiguration
Für jedes Objekt wird beim Anlegen entsschieden, in welchem Tablespace es liegen soll.
Zusätzlich werden über die sogenannten Storage-Parameter die Größen und die Anzahl der Extents
festgelegt.
Beispiel:
create table test
(
a number (8),
s varchar2 (1000)
)
tablespace USERS storage
( initial 1M next 100K minextents 1 maxextents 100 pctincrease 50
);
Erläuterung:
die Tabelle test wird im Tablespace USERS angelegt
initial und minextents: beim Anlegen der Tabelle wird ein Extent der Größe 1
Megabyte angelegt (welche Datei des Tablespaces entscheidet Oracle)
next: wenn der Speicherplatz des ersten Extents verbraucht ist, wird automatisch ein weiteres
Extent der Größe 100 Kilobyte angelegt
maxextents: es werden maximal 100 Extents angelegt
pctincrease: die Größe der automatisch angelegten Extents wächst um 50%,
d.h. 1. Extent: 1M, 2. Extent: 100K, 3. Extent: 150K, 4. Extent: 225K ...
Default-Einstellungen
Das benötigte Segment wird in dem Tablespace angelegt, daß dem Benutzer als
Default-Tablespace zugeordnet ist
Default Speicherparameter werden vom Tablespace übernommen