Export und Import

Um die Datenbank zu sichern oder sie auf einen anderen Server zu übertragen können Sie grundsätzlich die Werkzeuge Ihrer Datenbank verwenden wie z.B. Oracle „Data Pump“ oder PostgreSQL pg_dump/pg_dumpall/psql. Es gibt nichts das gegen die Verwendung dieser Werkzeuge spricht und tatsächlich sind sie die erste Wahl für diverse Aufgaben da sie schneller sind. Was dabei speziell zu beachten ist lesen Sie weiter unten.

Es gibt allerdings Einschränkungen dieser Werkzeuge:

  • Sie sind nicht unabhängig von der Datenbank, sodass es nicht möglich ist einen Oracle Export in PostgreSQL zu importieren oder umgekehrt.
     
  • Sie erlauben keine Filterung von Daten wie zum Beispiel archivierte Datensätze oder Zeilen welche zur Löschung markiert sind, das führt unter Umständen zu langen Laufzeiten wenn Daten von einer Produktionsdatenbank in eine Test- oder Qualitätsdatenbank übertragen werden sollen und die archivierten Daten oder die Auditdaten nicht benötigt werden.
     
  • Die Migration eines Schemas auf einen anderen Schemanamen ist aufwändiger als mit den BPS eigenen Tools. Berechtigungen müssen mit separaten Skripten oder manuell neu vergeben verden. Für die einwandfreie Migration mit DB Werkzeugen müssen Sie genau verstehen wie die BPS Datenbank organisiert ist.

BPS hat deshalb auch eigene Export- und Import-Skripts welche die Daten in einem Datenbankunabhängigen XML Format speichern respektive lesen, sowie ein Skript das die Datene einer Instanz direkt in eine andere kopiert.

Export Skript

Das Skript exportiert standardmässig alle vitalen Daten, lässt aber alle nicht vitalen Daten wie Anmeldungen, Sperren und Auditierungsdaten weg.

Das Exportskript wird von der Kommandozeile mit Hilfe des BPS Skript Interpreters gestartet. Wenden Sie den Schalter -h an um die Beschreibung des Aufrufs und der möglichen Optionen der aktuellen Version des Skripts zu erhalten:

C:\Program Files\IBK BPS 2.22.1\bin> bps export -h
SYNOPSYS

    bps export CONNECTSTRING [FILENAME] [OPTION]...

BESCHREIBUNG

    Diese Anwendung exportiert die BPS Datenbank in eine XML Datei.

    Als Vorgabe werden alle standard BPS Sequenzen und Tabellen mit Nutzdaten
    einbezogen, und Audittabellen wie auch Tabellen für vorübergehende Daten
    vom Export ausgeschlossen.

    Kundenspezifische Tabellen und Sequenzen können durch die Optionen -i, -I
    im Export einbezogen, nicht erwünschte mit den Optionen -e und -E
    ausgeschlossen werden.

    HINWEISE

     - Geben Sie als CONNECTSTRING die Anmeldung des BPS Besitzers als
       BenutzerID/PIN@Verbindung an.
     - Wenn FILENAME weggelassen wird. wird bps--.bpx
       verwendet.
     - Wenn der angegebene Dateiname keine Erweiterung hat, wird .bpx verwendet.

    BEISPIELE

    Basisexport der BPS Nutzdaten und Sequenzen in den Vorgabe-Dateinamen:
       bps export 0/1234@plant

    Basisexport der BPS Nutzdaten nach c:\test\myfile.xml:
       bps export 0/1234@plant c:\test\myfile.xml
  
    Inkludiere alle kundenspezifische Tabellen ct_* ausser ct_temp
    und ct_scratch:
        bps export 0/1234@plant -i ct!_% -e ct!_temp,ct!_scratch
  
OPTIONEN

    -n, --nodefaulttables
        Vorgabetabellen nicht inkludieren, nur die durch -i und -e definierten.
  
    -N, --nodefaultsequences
        Vorgabesequenzen nicht inkludieren, nur die durch -I und -E
        definierten.
  
    -d, --nodeleted
        Datensätze mit Löschstatus in regulären BPS Tabellen ausschliessen.
  
    -a, --noarchived
        Datensätze mit Archivstatus in regulären BPS Tabellen ausschliessen.
  
    -h, --help
        Hilfe anzeigen (diese).
  
    -i INCLUDETABLES, --includetables=INCLUDETABLES
      Eine kommaseparierte Liste von inkludierten Tabellenmustern.
  
      - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
        Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.

    -e EXCLUDETABLES, --excludetables=EXCLUDETABLES
        Eine kommaseparierte Liste von exkludierten Tabellenmustern.
  
        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.
  
        - Tabellen welche von anderen inkludierten Tabellen referenziert sind
          werden trotzden inkludiert.
    
    -I INCLUDESEQUENCES, --includesequences=INCLUDESEQUENCES
      Eine kommaseparierte Liste von inkludierten Sequenzenmustern.
  
       - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.
  
    -E EXCLUDESEQUENCES, --excludesequences=EXCLUDESEQUENCES
        Eine kommaseparierte Liste von exkludierten Sequenzenmustern.
   
        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.
  
Benötigte Zeit war 0 Stunde(n), 0 Minute(n) und 1 Sekunde(n).
  
C:\Program Files\IBK BPS 2.22.1\bin>

Import Skript

Das Skript importiert standardmässig alle Tabellendaten und Sequenzen welche sich in der Exportdatei befinden. Auf der Ziel-Datenbank müssen vorgängig die BPS Objekte mit der gleichen BPS Version erzeugt werden von welcher der Export stammt, siehe Einrichten der Datenbank.

Alle Tabellen werden in der Ziel-Datenbank per Truncate gelöscht bevor der Import der neuen neuen Daten beginnt damit durch die neuen Daten keine Regeln (Constraints) verletzt werden.

Es gibt Optionen um Tabellen, archivierte Daten oder Daten die zur Löschung vorgesehen sind zu exkludieren.

Das Importskript wird von der Kommandozeile mit Hilfe des BPS Skript Interpreters gestartet. Wenden Sie den Schalter -h an um die Beschreibung des Aufrufs und der möglichen Optionen der aktuellen Version des Skripts zu erhalten:

C:\Program Files\IBK BPS 2.22.1\bin> bps import -h
SYNOPSYS

    bps import CONNECTSTRING FILENAME [OPTION]...

BESCHREIBUNG

    Diese Anwendung importiert die BPS Datenbank von einer BPS Exportdatei
    (bpx).

    Standardmässig werden alle Tabellen und Sequenzen der Exportdatei
    importiert.

    Tabellen können mit der Option -e ausgeschlossen werden.
    Sequenzen können mit der Option -E ausgeschlossen werden.
    Datensätze können mit den Schaltern -h und -d gefiltert werden.

    HINWEISE

     -  Geben Sie als CONNECTSTRING die Anmeldung des BPS Besitzers als
       BenutzerID/PIN@Verbindung an.
     - Wenn der angegebene Dateiname keine Erweiterung hat, wird .bpx verwendet.
  
    BEISPIELE

    Basisimport der ganzen Exportdatei bps-plant-20100108135920.bpx:
      bps import 0/1234@plant bps-plant-20100108135920

    Archivierte und zu löschende Datensätze ausschliessen:
      bps import 0/1234@plant mydump.bpx -h -d

    Kundenspezifische Tabellen mit Namensmuster ct_* ausschliessen:
      bps import 0/1234@plant mydump.bpx -e ct!_%

OPTIONEN

    -d, --nodeleted
        Datensätze die zum Löschen markiert sind ausschliesssen.
        Es ist wahrscheinlich dass dieser Schalter Constraintfehler bei
        abhängigen Datensätzen verursacht, deshalb wird der Import nach solchen
        Fehlern fortgesetzt.

    -a, --noarchived
        Datensätze die archiviert sind ausschliesssen.
        Es ist wahrscheinlich dass dieser Schalter Constraintfehler bei
        abhängigen Datensätzen verursacht, deshalb wird der Import nach solchen
        Fehlern fortgesetzt.

    -h, --help
        Hilfe anzeigen (diese).

    -e EXCLUDETABLES, --excludetables=EXCLUDETABLES
        Eine kommaseparierte Liste von exkludierten Tabellenmustern.

        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.

    -E EXCLUDESEQUENCES, --excludesequences=EXCLUDESEQUENCES
        Eine kommaseparierte Liste von exkludierten Sequenzmustern.

        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.

Benötigte Zeit war 0 Stunden, 0 Minuten und 1 Sekunden.

C:\Program Files\IBK BPS 2.22.1\bin>

Kopier-Skript

Das Skript copydb eignet sich um eine bestehendes BPS Schema in ein anderes ebenfalls bereits bestehende BPS Schema zu kopieren. Beide Instanzen müssen die gleiche BPS Version aufweisen, hingegen kann das Schema unterschiedlich sein. Auch ist es möglich von PostgreSQL nach Oracle oder umgekehrt zu kopieren.

Alle Tabellen werden in der Ziel-Datenbank per Truncate gelöscht bevor das kopieren beginnt, damit durch die neuen Daten keine Regeln (Constraints) verletzt werden. Es gibt Optionen um Tabellen, archivierte Daten oder Daten die zur Löschung vorgesehen sind zu exkludieren.

Das Kopierskript wird von der Kommandozeile mit Hilfe des BPS Skript Interpreters gestartet. Wenden Sie den Schalter -h an um die Beschreibung des Aufrufs und der möglichen Optionen der aktuellen Version des Skripts zu erhalten:

C:\Program Files\IBK BPS 2.22.1\bin>bps copydb -h
SYNOPSYS

    bps copydb SOURCECONNECT TARGETCONNECT [OPTION]...

BESCHREIBUNG

    Diese Anwendung kopiert eine BPS Datenbank direkt von einer anderen
    Datenbank.

    Als Vorgabe werden alle Standard-Sequenzen und -Tabellen mit permanentem
    Inhalt kopiert, und Audit-Tabellen sowie Tabellen mit transienten Daten
    werden ausgelassen.

    Tabellen und Sequenzen können mit den Schaltern -i, -I, -e und -E
    inkludiert oder exkludiert werden.

    Datensätze können mit den Schaltern -h und -d gefiltert werden.

    HINWEISE

     Geben Sie die Anmeldungsangabe als userid/pincode@connection ein:
     - Bei SOURCECONNECT der BPS Besitzer der Quell-Datenbank.
     - Bei TARGETCONNECT der BPS Besitzer der Ziel-Datenbank.

    BEISPIELE

    Kopieren der BPS Datenbank plant auf die Datenbank test:
      bps copydb 0/1234@plant 0/3456@test

    Gelöschte und archivierte Daten nicht kopieren:
      bps copydb 0/1234@plant 0/3456@test -h -d

    Kundenspezifische Tabellen mit Name beginnend mit ct_ einschiessen:
      bps copydb 0/1234@plant 0/3456@test -i ct!_%

OPTIONEN

    -n, --nodefaulttables
        Standard-Tabellen nicht einschiessen, nur solche die mit -i angegeben
        sind.

    -N, --nodefaultsequences
        Standard-Sequenzen nicht einschiessen, nur solche die mit -I  angegeben
        sind.

    -d, --nodeleted
        Datensätze die zum Löschen markiert sind ausschliesssen.
        Es ist wahrscheinlich dass dieser Schalter Constraintfehler bei
        abhängigen Datensätzen verursacht, deshalb wird der Import nach solchen
        Fehlern fortgesetzt.
  
    -a, --noarchived
        Datensätze die archiviert sind ausschliesssen.
        Es ist wahrscheinlich dass dieser Schalter Constraintfehler bei
        abhängigen Datensätzen verursacht, deshalb wird der Import nach solchen
        Fehlern fortgesetzt.
 
    -h, --help
        Hilfe anzeigen (diese).
  
    -i INCLUDETABLES, --includetables=INCLUDETABLES
        Eine kommaseparierte Liste von inkludierten Tabellenmustern.
  
        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.
  
    -e EXCLUDETABLES, --excludetables=EXCLUDETABLES
        Eine kommaseparierte Liste von exkludierten Tabellenmustern.

        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.

    -I INCLUDESEQUENCES, --includesequences=INCLUDESEQUENCES
        Eine kommaseparierte Liste von inkludierten Sequenzenmustern.

        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.

    -E EXCLUDESEQUENCES, --excludesequences=EXCLUDESEQUENCES
        Eine kommaseparierte Liste von exkludierten Sequenzenmustern.

        - Die Muster müssen in Kleinbuchstaben sein und werden für SQL LIKE
          Vergleiche verwendet, wobei ! als Escapezeichen verwendet wird.

Benötigte Zeit war 0 Stunde(n), 0 Minute(n) und 1 Sekunde(n).

C:\Program Files\IBK BPS 2.22.1\bin>

Export/Import mit Datenbankwerkzeugen

Bei Verwendung der Datenbank Werkzeuge (z.B. Oracle «DataPump» 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.
     
  • 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
  • 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 and p_rebuildordershadow nach dem Import und während noch niemand anders die Datenbank verwendet.
Kommentare