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.
Neueste Kommentare
Noch keine Kommentare zu Erstellen von Tablespaces mit mehrfachen Blockgrößen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.