Home ORDIX AG             Dienstleistung             Trainingsshop    Kunden / Referenzen Aktuelles    Kontakt
Home  Pfeil  ORDIX News  Pfeil  3/2004  Pfeil  
suche: 

ORDIX News Archiv

Das IT-Magazin der ORDIX AG mit Fachbeiträgen zu Datenbanken, Unix und Java/XML.

Oracle 10g (Teil II):

Tablespaces unter 10g:
größer – schneller – flexibler

Ein wesentlicher Teil der administrativen Arbeit an einer Oracle Datenbank befasst sich mit den Tablespaces. Nachdem wir im ersten Teil der Reihe Oracle Data Pump vorgestellt haben, werden in diesem Beitrag die Neuerungen vorgestellt, die Oracle 10g für die Arbeit mit Tablespaces bietet. Ein Teil dieser Neuerungen bringt Erleichterungen in der administrativen Arbeit, der Rest hat Einfluss auf die Performance.

SYSAUX – mehr Übersicht im System

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.

DEFAULT TABLESPACE zuweisen

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.

Tablespaces umbennen

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.

Bigfile Tablespaces

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.

Verwaltung der Bigfile Tablespaces

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.

Temporary Tablespace Groups

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:

Syntax für Temporary Tablespace Groups

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.

Fazit

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).