ASPICON GmbH Hartmannstraße 7
D-09111 Chemnitz
Fon +49.371.909515-100
Fax +49.371.909515-199
Email info@aspicon.de


Konsistente Exports mit Export und DataPump

Meldung vom 01.11.2011

 

Die logische Datenbanksicherung mit dem exp-Utility (exp) oder DataPump Export (expdp) ist eine sinnvolle Ergänzung der Backupstrategie eines Unternehmens. Häufig wird diese Technologie auch zum Befüllen von Testdatenbanken verwendet. In beiden Fällen ist es wichtig, auf einen logisch konsistenten Export zu achten, da das mit den Defaultwerten von exp und expdp nicht automatisch gegeben ist.


Das konventionelle Export-Utility exp bietet folgende Parameter zur Sicherstellung (unterschiedlicher) Konsistenzlevel an:

CONSISTENT=Y: Der gesamte Export wird in eine Read-Only-Transaktion gebettet und damit unabhängig von laufenden Änderungen alle Objekte mit dem Datenstand vom Exportbeginn exportiert.

OBJECT_CONSISTENT=Y:
Je Tabelle wird eine separate Read-Only-Transaktion gesetzt. Partitionierte Tabellen werden damit in sich konsistent exportiert. Allerdings ist die logische Konsistenz zwischen Tabellen nicht sichergestellt.

OBJECT_CONSISTENT=N - die Standardeinstellung - würde nicht einmal die logische Integrität zwischen Partitionen ein und der selben Tabelle sicherstellen. Ein objekt-konsistenter Export kann deshalb beim Import Verletzungen von foreign-key-Constraints verursachen.


FLASHBACK_SCN/FLASHBACK_TIME: Der Einsatz eines der beiden FLASHBACK-Parameter führt zu einem Export, der im Grundsatz dem CONSISTENT=Y vergleichbar ist. Allerdings kann hiermit wahlweise auch der Datenstand zu einem früheren Zeitpunkt als dem Exportstart aus der Datenbank geschrieben werden. Wie weit dabei in die Historie zurückgegangen werden kann, hängt natürlich von den Flashbackeinstellungen der jeweiligen Datenbank und dem Transaktionsaufkommen ab. Für einen flashback-basierten Export greift exp auf FLASHBACK QUERY zurück, den einzigen Flashback-Mechanismus, der auch in der Oracle Database Standard Edition zulässig ist.

Seit Oracle 10g wird für die Erstellung von Exports das DataPump Utility empfohlen, dass mittelfristig den konventionellen Export/Import komplett ablösen soll. Hinsichtlich logischer Konsistenz der exportierten Daten ist bei DataPump verglichen mit exp folgendes zu beachten:


OBJECT_CONSISTENT: Dieser Parameter existiert nicht mehr. DataPump-Exporte sind per se objekt-konsistent.

CONSISTENT: Ein CONSISTENT-Parameter existiert in den Versionen 10g und 11g nicht mehr, wurde allerdings in 11gR2 in einem sogenannten Legacy-Mode wieder eingeführt. Tatsächlich verbirgt sich hinter CONSISTENT=Y jetzt aber nichts anderes mehr als "flashback_time=TO_TIMESTAMP( , 'YYYY-MM-DD HH24:MI:SS')". Das Ergebnis ist also das selbe, nur der Mechanismus ist jetzt ein anderer (Flashback statt Read-Only-Transaktion). Unschwer zu erkennen ist daraus, dass der in 10g und 11g fehlende CONSISTENT-Mode auch dort schon mit dem entsprechenden FLASHBACK-Setting nachgebildet werden kann. Eine etwas simplere Nachbildung von CONSISTENT=Y ist übrigens in 11g möglich mit FLASHBACK_TIME="systimestamp". Wegen einem Bug in der 10g kann diese Syntax dort nicht verwendet werden. Statt dessen funktioniert aber der Umweg über die aktuelle SCN: FLASHBACK_TIME="SCN_TO_TIMESTAMP(DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER)"
FLASHBACK_SCN/FLASHBACK_TIME
: Die Flashback-Parameter existieren in der selben Bedeutung wie im konventionellen Export weiter.





Zurück