Data Pump: Umgang mit Partitionen

Dieser Artikel bezieht sich im Wesentlichen auf Oracle Version 10g.

Problem:

Aus einer Quell-DB mit partitionierten Tabellen sollen Daten auf eine Ziel-DB ohne Partitioning Option transferiert werden. Diese Kombination ist wegen der Zusatzkosten für die Partitioning Option gar nicht so selten; die Quelle könnte ein Produktionssystem und das Ziel ein Testsystem oder ein Data Mart sein.

Wird ein herkömmlicher Import mit der Data Pump versucht, bricht imdp mit der Fehlermeldung „ORA-00439: feature not enabled: Partitioning“ ab.

Dummerweise wird dieser Fehler ausgegeben, auch wenn die Tabelle in der Ziel-DB bereits existiert und nur die Inhalte übertragen werden sollen (d.h., die Option „table_exists_action=append“ hilft hier auch nicht).

Abhilfe:

  1. Manuelles Anlegen der Tabelle in der Ziel-DB ohne Partitionen bzw. bestehende, unpartitionierte Tabelle leeren (truncate)
  2. Bei großen Datenmengen im Vorfeld Indizes und Constraints deaktivieren
  3. Import der Daten mit der Option „CONTENT=DATA_ONLY
  4. Indizes und Constraints wieder aktivieren oder neu aufbauen.

Soll ein ganzes Schema mit vielen unpartitionierten und wenigen partitionierten Tabellen importiert werden, dann kann man zunächst die unpartitionierten Tabellen in einem ersten Durchlauf importieren und in einem zweiten Durchlauf die o.g. Punkte durchführen.

Ab Oracle 11g

…wird das viel einfacher: Mit der Option

PARTITION_OPTIONS=merge

Können alle Partitionen der Quelle in eine Tabelle des Ziels überführt werden. Darüberhinaus gibt es mit „departition“ auch die Möglichkeit, pro Partition eine neue Zieltabelle anzulegen.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s