dok:genexpimp

Export/Import Übersicht

Um die ganze Datenbank zu sichern oder sie auf einen anderen Server zu übertragen können sie die Werkzeuge ihrer Datenbank verwenden wie z.B. Oracle «Data Pump» oder PostgreSQL «pg_dump»/«pg_dumpall». Es gibt nichts das gegen die Verwendung dieser Werkzeuge spricht und tatsächlich sind sie die erste Wahl für eine reine 1:1 Sicherung der ganzen DB da sie schnell sind.

Etwas komplizierter wird die Sache wenn einzelne BPS Schemas zu exportieren und importieren sind, da nicht alle benötigte Objekte im Schema enthalten sind. DB-Benützer und -Rollen sind typische Beispiele solcher Objekte, oder auch Tablespaces.

Ab BPS 2.24 stehen Scripts zur Verfügung welche den Export/Import einzelner BPS Schemas mit Datenbankwerkzeugen erheblich vereinfachen. Ausserdem ist es damit problemlos möglich auf einen anderen Schemanamen zu importieren, Tablespacekonfiguration zu ändern und sogar einen Reorg durchzuführen. Details dazu finden sich in den Kapiteln Export/Import mit Oracle Data Pump und Export/Import mit PostgreSQL Werkzeugen.

Was bei älteren BPS Versionen zu beachten ist, wo diese Scripts noch nicht zur Verfügung stehen, ist unten im nächsten Kapitel beschrieben.

Es gibt gewisse Einschränkungen bei Verwendung der datenbankeigenen Werkzeuge:

  • Es ist nicht möglich ist einen Oracle Export in PostgreSQL zu importieren oder umgekehrt.
  • Wenn sie die BPS-Scripts nicht verwenden ist die Migration eines Schemas auf einen anderen Schemanamen aufwändiger. Berechtigungen müssen z.B. neu vergeben werden. Für die einwandfreie Migration mit DB Werkzeugen müssen Sie genau verstehen wie die BPS Datenbank organisiert ist.

BPS hat auch Export- und Import-Skripts welche die Daten in einem datenbankunabhängigen XML Format speichern. Die Laufzeit dieser Scripts ist erheblich länger, aber manchmal ist das die einizige Option, z.B. wenn man von Oracle nach PostgreSQL oder umgekehrt gehen will. Diese Scripts sind im Kapitel Export/Import per XML Datei beschrieben.

Bei Verwendung der Datenbank Werkzeuge (z.B. Oracle «Data Pump» oder PostgreSQL «pg_dumpall») müssen gewisse Funktionen separat abgehandelt werden welche bei den BPS Skripts automatisch erledigt werden.

  • Die Audit-Tabellen müssen eventuell vorgängig bereinigt werden damit die Datenmenge eingeschränkt wird (Siehe Auditierung), oder die Audit-Tabellen (alle die mit ta_ beginnen) müssen komplett aus dem Export ausgenommen werden.
  • Tabellen mit transienten Daten (z.B. Sperrtabellen und Tabellen mit Informationen zu aktuellen Anmeldungen) müssen entweder bereits vorgängig aus dem Export ausgenommen werden, oder nachträglich geleert werden (z.B. per Truncate). Die zur aktuellen BPS Version gehörige Liste der betreffenden Tabellen finden Sie am Anfang des BPS Skripts export.js in der Liste mExcludes. Diese Liste kann bei neuen BPS Versionen jeweils erweitert werden.
  • Falls die verwendeten Tablespaces zwischen der Export und Import Datenbank unterschiedlich heissen, müssen diese nach dem Import in den BPS Einstellungen unter Central System Settings / Install korrigiert werden. (Nur bis 2.24.3, ab 2.24.4 existieren diese Einstellungen nicht mehr und die Tablespaces werden dynamisch ermittelt.)
  • Wenn der Schemaname zwischen Quell- und Ziel-Datenbank unterschiedlich ist, müssen sämtliche Berechtigungen (Grants) auf die entsprechenden Rollen korrigiert werden. Ebenfalls müssen alle übrigen Regeln (Constraints) kontrolliert und ggf. korrigiert werden falls diese das alte Schema referenzieren.
    Für die meisten ist das folgende Verfahren einfacher und sicherer wenn das Schema unterschiedlich ist:
    • Erstellen Sie zunächst mit dem Assistent für neue Datenbanken das neue Schema auf der Zieldatenbank. Verwenden Sie dazu dieselbe BPS Version wie bei der Quelldatenbank.
    • Leeren Sie die neuen Tabellen z.B. per Truncate (die meisten sollten bereits leer sein)
    • Importieren Sie mit den DB Werkzeugen ausschliesslich die Daten, bei Oracle Datapump z.B. mit CONTENT=DATA_ONLY
    • Kopieren sie die aktuellen Werte der Sequenzen in der Quell-Datenbank indem sie diese in der Ziel-Datenbank neu erzeugen und die Berechtigungen der Originale wieder setzen.
  • Die Schattensummen können inkonsistent sein falls die Datenbank während des Exports in Gebrauch war. Aktualisieren sie die Schattensummen deshalb mittels der Datenbank-Prozeduren p_rebuildstockshadow, p_rebuildordershadow und p_rebuildpackshadow nach dem Import und während noch niemand anders die Datenbank verwendet.
  • dok/genexpimp.txt
  • Zuletzt geändert: 25.04.2021 13:01
  • von ibk