
Das IT-Magazin der ORDIX AG mit Fachbeiträgen zu Datenbanken, Unix und Java/XML.
Unter Oracle 10g gibt es neben SYSTEM einen weiteren Pflicht-Tablespace SYSAUX, der als Ergänzung zu SYSTEM eingerichtet wird. Dieser Tablespace soll
Der Tablespace SYSAUX hat die folgenden fixen Attribute:
Der Tablespace kann weder umbenannt noch gelöscht werden.
Sollen als Teilschritt einer Migration die Objekte etwa von Oracle Text, Oracle interMedia u. ä. in den Tablespace SYSAUX verschoben werden, stellt Oracle dafür Prozeduren zur Verfügung. Die View V$SYSAUX_OCCUPANTS kann hierfür zu Rate gezogen werden.
Seit Oracle 9i kann einer Datenbank ein Default Temporary Tablespace zugewiesen werden. Mit Oracle 10g kann der Datenbank jetzt ein Default Permanent Tablespace zugewiesen werden – bisher stand dieser Default grundsätzlich auf SYSTEM.
Diese Zuweisung ist eine Erweiterung der Befehle CREATE DATABASE:
SQL> CREATE DATABASE TEST
...
DEFAULT TABLESPACE \
test1 DATAFILE ...;
und ALTER DATABASE:
SQL> ALTER DATABASE TEST
...
DEFAULT TABLESPACE test2;
DEFAULT_PERMANENT_TABLESPACE ist die Spalte der View DATABASE_PROPERTIES, über die der Default Permanent Tablespace ausgelesen werden kann.
Mit der Klausel RENAME TO des Befehls ALTER TABLESPACE bietet Oracle jetzt die Möglichkeit, Tablespaces umzubenennen:
SQL> ALTER DATABASE ts1
RENAME TO ts2;
Auf die Tablespaces SYSTEM und SYSAUX kann dieser Befehl nicht angewendet werden. Wird der aktive UNDO-Tablespace umbenannt, wird diese Aktion automatisch in der SPFILE nachgetragen – sofern vorhanden. Diese Funktion kann beim Import über transportable Tablespaces nützlich werden.
Mit Version 10g wird ein neuer Tablespace-Typ eingeführt, das Bigfile Tablespace (BFT), das die Verwaltung erheblich größerer Datenmengen als in früheren Versionen erlaubt. So beträgt die maximal mögliche Datenmenge nun 8 Exabyte, das entspricht 8 Millionen Terabyte. Das bedeutet allerdings nicht, dass es für Oracle nur noch diesen Typ von Tablespace gibt. Der bisher bekannte Typ besteht weiter unter der Bezeichnung Smallfile Tablespace. Eine Oracle Datenbank kann beide Typen von Tablespaces gleichzeitig nutzen.
Konnten die bisherigen Tablespaces aus maximal 1022 Datafiles bestehen, besteht ein BFT aus genau einem Datafile (siehe Abbildung 1). Dieses Datafile hat eine Kapazität von maximal 4 Billionen Blöcken und kann somit bis zu 128 TB groß werden (bei 32K Blocksize).
Abb. 1: Smallfile- und Bigfile Tablespaces.
Da ein BFT nur aus einer einzigen Datei besteht, ändert sich die Struktur der ROWID: der Teil der ROWID, der die Datendatei bezeichnete, kann jetzt genutzt werden, um die erheblich größere Anzahl an Datenblöcken eindeutig zu identifizieren (siehe Abbildung 2).
Abb. 2: Änderungen bei der ROWID.
Default beim Anlegen von Datenbanken ist der Smallfile Tablespace. Dieser Standard kann mit CREATE oder ALTER DATABASE übersteuert werden. Mit der Option BIGFILE im Befehl CREATE TABLESPACE wird ein Bigfile Tablespace angelegt, ohne OPTION wird als Default ein Smallfile Tablespace angelegt.
SQL> CREATE BIGFILE TABLESPACE big1
DATAFILE '/oradata/kr/big1.dbf' \
SIZE 1G;
Ein Bigfile Tablespace muss immer "locally managed" sein und "Automatic Segment Space Management" muss eingeschaltet sein.
Um welchen Typ von Tablespace es sich handelt, kann aus der Spalte BIGFILE der View DBA_TABLESPACES ausgelesen werden.
Ein Bigfile Tablespace sollte immer dann eingesetzt werden, wenn die Datenbank die bisher möglichen 512 PetaByte ausgereizt hat.
Oracle 10g bietet jetzt die Möglichkeit, Temporary Tablespace Groups (TTG) anzulegen. Bei paralleler Sortierung über mehrere Partitionen und bei einer Single-SQL auf einem Bigfile Tablespace kann das Arbeiten mit einer TTG sinnvoll sein.
Für die TTGs gelten folgende Grundregeln:
Mit dem CREATE Befehl kann eine TTG implizit erzeugt und ein TEMPORARY Tablespace zugewiesen werden:
SQL> CREATE TEMPORARY TABLESPACE temp1
TEMPFILE '/oradata/db/temp1_1.tmp' SIZE 10M \
TABBLESPACE GROUP group1;
Wird der einzige Tablespace einer Gruppe gelöscht oder herausgenommen, wird implizit auch die TTG gelöscht.
Mit dem Befehl ALTER DATABASE kann eine Tablespace-Gruppe auch zum DEFAULT TEMPORARY TABLESPACE gemacht werden. Dabei ersetzt der Name der Gruppe den sonst genutzten Namen des einzelnen Tablespaces:
SQL> ALTER DATABASE test
SET DEFAULT TEMPORARY TABLESPACE group1;
Informationen über die Tablespace-Gruppen einer Datenbank enthält die View DBA_TABLESPACE_GROUPS.
Steigerungen der Performance bringen die Neuerungen nur in sehr extremen und speziellen Einsatzbereichen einer Oracle Datenbank. Die administrativen Erweiterungen bringen einiges an Erleichterung und die Einführung des Tablespace SYSAUX sollte eine Oracle Datenbank in Zukunft auf der Ebene der Datenobjekte übersichtlicher strukturieren.
Uwe Rübesamen (info@ordix.de).