Erstellen von Tablespaces mit mehrfachen Blockgrößen

Im nachstehenden Beispiel wird ein Tablespace mit 16 KByte für die Erfassung der Indizes erstellt. Wird nicht Oracle Managed Files (OMF) benutzt, überprüft man zunächst den Speicherort der bestehenden Dateien in der Datenbank. Die neue Tablespace-Datei muss sich in diesem Tablespace befinden.


SQL> select file_name from dba_data_files;

FILE_NAME ----------------------------------------------------------- C:ORACLEORADATADIOGENESSYSTEM01.DBF C:ORACLEORADATADIOGENESUNDOTBS01.DBF C:ORACLEORADATADIOGENESCWMLITE01.DBF C:ORACLEORADATADIOGENESDRSYS01.DBF C:ORACLEORADATADIOGENESEXAMPLE01.DBF C:ORACLEORADATADIOGENESINDX01.DBF C:ORACLEORADATADIOGENESTOOLS01.DBF C:ORACLEORADATADIOGENESUSERS01.DBF

Nachdem nun der Ordner bekannt ist, wird ein Tablespace mit Datenblocks von 16 KByte unter Verwendung eines lokal verwalteten Tablespace mit Bitmap-Freilisten erstellt:


create tablespace
ts_16k
datafile
'c:oracleoradatadiogenes16k_ts.dbf'
size
10m
blocksize 16k
extent management local
segment space management auto;

Obwohl Oracle9i Blockgrößen von 32 KByte unterstützt, ist die maximale Blockgröße mancher Betriebssysteme, darunter auch Windows, auf 16 KByte begrenzt. Blockgrößen von 32 KByte werden jedoch von praktisch allen UNIX- und Mainframe-Plattformen unterstützt.

Erwähnenswert sind ebenfalls die lokale Verwaltung der Tablespaces (und nicht vom Verzeichnis aus) sowie die neuen automatischen Bitmap-Freilisten von Oracle9i. Lokal verwaltete Tablespaces (LMTs) sorgen für eine erheblich geringere Fragmentierung innerhalb der Tablespaces, und Bitmap-Freilisten entzerren Wartesituationen von Segmentköpfen (buffer busy waits), indem sie die überholten Linkverzeichnis-Freilisten von Oracle 8i mit Bitmap-Freilisten ersetzen. Diese sich zum Industriestandard entwickelnden neuen Features von Oracle9i reduzieren die Häufigkeit der Tablespace- und Objekt-Reorganisation und beseitigen das lästige Problem der Definition mehrfacher Freilisten zur Reduzierung von Pufferwartesituationen von Segmenten innerhalb des Tablespace.

Nach dem Erstellen des Tablespace lassen sich die Ergebnisse mit dieser simplen Abfrage überprüfen:


col tablespace_name format a15
col block_size format 99.999
select
tablespace_name,
block_size,
contents,
extent_management,
allocation_type,
segment_space_management
from
dba_tablespaces;

Die Ergebnisse in Tabelle B zeigen, dass der neue Tablespace mit einer Blockgröße von 16 KByte existiert.

TABLESPACE_NAME /
BLOCK_SIZE
CONTENTS /
EXTENT_MAN
ALLOCATIO /
SEGMEN
SYSTEM /
4,096
PERMANENT /
DICTIONARY
USER /
MANUAL
UNDOTBS /
4,096
UNDO /
LOCAL
SYSTEM /
MANUAL
CWMLITE /
4,096
PERMANENT /
LOCAL
SYSTEM /
MANUAL
DRSYS /
4,096
PERMANENT /
LOCAL
SYSTEM /
MANUAL
EXAMPLE /
4,096
PERMANENT /
LOCAL
SYSTEM /
MANUAL
INDX /
4,096
PERMANENT /
LOCAL
SYSTEM /
MANUAL
TEMP /
4,096
TEMPORARY /
LOCAL
UNIFORM /
MANUAL
TOOLS /
4,096
PERMANENT /
LOCAL
SYSTEM /
MANUAL
USERS /
4,096
PERMANENT /
LOCAL
SYSTEM /
MANUAL
TS_16K /
16,384
PERMANENT /
LOCAL
SYSTEM /
AUTO

Tabelle B

Nachdem nun der Tablespace mit 16 KByte erstellt ist, wird ein Mechanismus zum Verschieben der Oracle-Tabellen und Indizes in den neuen Tablespace benötigt. Oracle9i verfügt über Online-Befehle, die während des dynamischen Transfers von einem Tablespace zum anderen die Datenbankobjekte zügig verschieben und wieder aufbauen.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Erstellen von Tablespaces mit mehrfachen Blockgrößen

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *