|
Transportable Tablespaces: Grundlagen und Einsatz am Beispiel
von Ulrike Schwinn, ORACLE Deutschland GmbH
Transportable Tablespaces, ein Feature der Enterprise Edition, ist schon seit Oracle8i ein sehr gutes Mittel,
um Daten schnell und effizient zwischen Datenbanken zu transportieren. Die Idee dabei ist, "nur" die Metadaten eines Tablespaces zu exportieren
und eine Kopie der Datendateien zur Verfügung zu stellen. Nachdem die Datendateien auf dem Zielsystem zur Verfügung
stehen, erfolgt als abschliessende Operation nur noch ein Import der zugehörigen Metadaten. Aus diesem Grund kann diese Technik
wesentlich schneller Daten bewegen als ein traditioneller Datenbank-Export bzw.Import.
Das Vorhandensein einer Enterprise Edition ist dabei zum Erzeugen des transportierbaren Sets notwendig; das Plugin des Sets kann in jede Edition der Datenbank erfolgen.
Unterschiedliche Blockgrößen bzw. unterschiedliche Plattformen der Datenbanken (z.B. von Windows nach Solaris)
stellen seit Oracle 9i bzw. 10g kein Hindernis mehr dar. Ausgehend von einem älteren Datenbankrelease
(ab Oracle 8i) ist der Transport auch in ein neueres Release - beispielsweise in Oracle 9i, 10g oder
11g möglich. Der Einsatz ist vielfältig und wird von Kunden erfolgreich genutzt.
Auch im Migrationsumfeld hat sich der Einsatz von Transportable Tablespaces bewährt.
Liegt ein grosses Datenvolumen vor und ist die Transportzeit begrenzt, sind die Vorteile, die die Transportable Tablespace Technologie bietet,
im Vergleich zu anderen Techniken nicht zu übertreffen.
Folgende Beispiele zeigen sinnvolle Einsatz-Szenarien.
- Transport von Partitionen
- Archivierung von Daten
- Plattform-Migrationen
- Datenbank-Migrationen
Im folgenden Tipp werden wir einen Transport ausführlich erläutern. Das erste Szenario - der Transport von Partitionen -
dient dabei als Beispiel.
Bevor man diese Technik als Transportmittel einsetzt, sollten die Einschränkungen beachtet werden.
Folgende Liste gibt einen Überblick:
- Verwendung des gleichen Zeichensatzen (Characterset und National Characterset)
- Verwendung von "self-contained" Objekten (D.h. es dürfen keine Abhängigkeiten ausserhalb des transportierenden Sets existieren)
- Kein Transport von Objekten im SYSTEM Tablespace
- Einschränkungen bei der Nutzung von verschlüsselten Tablespaces und XMLTYPEs
- Keine Namensgleichheit der Tablespaces im Ziel- und Quellsystem
Eine vollständige Liste findet sich im Oracle Database Administrator's Guide
11g Release 2 (11.2).
Überprüfung der Voraussetzungen
Bevor wir an einem Beispiel den Transport durchführen, wird überprüft, ob der gleiche Zeichensatz verwendet
wird. Folgende Abfrage überprüft den Zeichensatz und sollte auf beiden Systemen durchgeführt werden.
Nehmen wir als Beispielumgebung die partitionierte Tabelle COSTS, die um eine Partition COSTS_Q4_2006 erweitert
werden soll. Die Daten liegen in der Datenbank A in einer nicht partitionierten Tabelle COST_NEU, die die
gleiche Struktur wie die Tabelle COSTS aufweist.
Dabei liegen die Tabelle und die Indizes in einem separaten Tablespace COST_PART, der "self-contained" ist.
In folgendem Listing werden die notwendigen Voraussetzungen für das Beispiel geschaffen.
Im nächsten Schritt wird überprüft, ob der Tablespace transportierbar - auch self-contained - ist. Dies
wird mit dem Package DBMS_TTS durchgeführt. Setzt man das zweite Argument auf den Wert TRUE, werden auch
die zugehörigen Constraints überprüft. Folgendes Beispiel zeigt die Verwendung.
Der Transport
Nun kann der Transport beginnen! Dazu wird zuerst der Tablespace COST_PART in der Datenbank A auf READ ONLY
gesetzt. Danach werden die Metadaten mit dem Werkzeug Data Pump exportiert.
Hinweis: Wird die Transportable Tablespaces Technologie in älteren Versionen ab Version 8i genutzt, wird
das EXPORT/IMPORT Werkzeug statt Data Pump verwendet. Mehr dazu findet sich im Oracle Database Utilities 11g Release 2 (11.2)
Da es sich beim Data Pump Export "nur" um Metadaten-Informationen handelt, ist diese Operation schnell
durchgeführt. Nun werden die Dump-Datei cost_neu.dmp und die Datendateien cost_part.dbf des Tablespace COST_PART
auf den Server der Datenbank B kopiert. Diese Operation ist in der Regel die Zeitaufwändigste. Danach kann der Tablespace
COST_PART wieder auf READ WRITE gesetzt werden.
Bevor die Metadaten importiert werden, sehen wir uns die Zieltabelle etwas genauer an. Die Tabellenpartitionen liegen "direct load" komprimiert vor,
und die Bitmap Indizes sind im Status "USABLE".
Nun erfolgt der Import der Metadaten auf den Server mit Datenbank B.
Nach dem Import liegen die Tabelle COST_NEU und die zugehörigen Indizes im transportierten Tablespace COST_PART
in der Datenbank B vor. Die folgende Abfrage zeigt die vorhandenen Segmente und den Status der Indizes.
Nun wird die Tabelle COSTS um die leere Partition COST_Q4_2006 erweitert und erhält die Eigenschaft COMPRESS.
Das anschliessende EXCHANGE Kommando soll die entsprechenden Daten in die Tabelle COSTS kopieren und die beiden Indizes COSTS_PART_PROD
und COSTS_PART_TIME in die Indexpartitionen konvertieren. Die Option
WITHOUT VALIDATION beschleunigt die Operation, da keine Validierung der Partitionen vorgenommen wird.
Die Fehlermeldung beschreibt sehr treffend, wo das Problem liegt und wie es zu beheben ist.
Die Tabelle COSTS besitzt komprimierte Partitionen und "USABLE" Bitmap Indizes, wie wir zu Beginn überprüft
haben. Das Hinzufügen von Daten zu einer komprimierten Tabelle bspw. mit dem EXCHANGE-Kommando kann nicht
durchgeführt werden, da die Indizes den Status "USABLE" haben. Nachdem wir die Indizes der Tabelle COST_NEU
und die zugehörigen Indexpartitionen der Tabelle COSTS auf "UNUSABLE" geschaltet haben, ist das EXCHANGE-Kommando erfolgreich. Dies ist notwendig, da bei komprimierten Tabellen potentiell mehr Zeilen in einem Datenblock addressiert
werden können. Danach führen wir die entsprechenden REBUILD Kommandos durch. Diese Operationen müssen
nach weiteren Einfüge-Operationen NICHT wiederholt werden!
Danach ist die Tabelle COST_NEU leer und kann gelöscht werden.
Mögliche Variante: Nutzung unterschiedlicher Plattformen
Nehmen wir an, dass Datenbank A und Datenbank B auf Plattformen mit unterschiedlicher
Endianness (big bzw. little) installiert sind. Dies ist beispielsweise der Fall, wenn Linux und Solaris als Plattformen
verwendet werden. Ab Oracle Version 10g können die Datendateien mit Datenbankmitteln konvertiert werden, und
somit kann ein Transport zwischen Plattformen mit unterschiedlicher Endianness ermöglicht werden. Diese
Konvertierung muss vor dem Import der Metadaten der Datendateien erfolgen. Die genutzte Endianness lässt sich dabei mit folgender Abfrage verifizieren.
Die Konvertierung erfolgt mit dem RMAN Werkzeug und kann entweder auf dem Ziel- oder dem Quellsystem durchgeführt
werden. Dabei ist zu beachten, dass bei Angabe der Plattform die richtigen Schlüsselwörter (siehe v$transportable_platform) verwendet werden.
Folgendes Beispiel zeigt die Verwendung.
Die Datei wurde im vorangegangen Kopiervorgang nach /tmp kopiert. Nach der Konvertierung liegt sie im Datendatei-Verzeichnis
/space2/oradata/ der Datenbank B vor.
Mögliche Variante: ASM Instanzen
Das vorangegangenen Beispiel berücksichtigte keine ASM Instancen. Ist ASM im Einsatz, muss zusätzlich
berücksichtigt werden, wie die Dateien zwischen den Systemen kopiert werden können.
Dabei bieten sich folgende Möglichkeiten an:
- Nutzung von RMAN Kommandos wie z.B. CONVERT TABLESPACE ...DATAFILE '...' (auf dem Quellsystem) bzw. BACKUP AS COPY DATAFILE '...' FORMAT '+DGROUPA' (auf dem Zielsystem)
- Verwendung des Package DBMS_FILE_TRANSFER
- Verwendung des cp Kommandos im Linemode-Werkzeug ASMCMD (ab 11g)
- Nutzung der FTP bzw HTTP Protokolle der XMLDB für ASM (ab Oracle Version 10.2)
Die ausführliche Beschreibung dieser Techniken würde den Rahmen dieses Beitrags sprengen, daher sei auf die RMAN
Dokumentation, zukünftige Ausgaben der DBA Community und Note 394798.1 verwiesen.
Fazit
Die Transportable Tablespace Technologie ist einfach zu verwenden. Zudem bietet sie eine gute Alternative,
um Daten schnell zu bewegen, da die meisten Operationen bis auf die Kopie der Datendateien sehr schnell durchgeführt
werden können. Dabei stehen die beiden System nahezu uneingeschränkt zur Verfügung bis auf die Zeitspanne, in der die zu transportierenden Tablespaces READ ONLY gesetzt sind.
Zusätzlich eignet sich die Transportable Tablespace Technologie sehr gut zur Migration von Plattformen bzw.
Datenbankreleases. Die Idee dabei ist, alle Tablespaces ausser den SYSTEM Tablespace zu transportieren - wie im Beispiel gezeigt wurde.
Danach werden die fehlenden Data Dictionary Informationen in einem separaten Import ohne zusätzliche Dateninformationen bzw. mit
zusätzlichen Skripten hinzugefügt.
Mehr zu diesem Thema lesen Sie in den nächsten Ausgaben ...
Zurück zur Community-Seite
|