Benutzer-Werkzeuge

Webseiten-Werkzeuge


edv:db:sql:example:komplette_db_kopieren

Komplette DB kopieren

Das Kopieren einer DB (bzw. des Tabellen-Inhalts) in eine andere kann man manuell in folgenden Schritten erledigen:

1. Das Schema einer existierenden DB exportieren:

SUN> dbshema -d quell-db-name shema.quell-db-name.20050128.sql

2. Eine leere DB erstellen (z.B. "ziel-db-name"):

(Hier die erforderlichen Schritte.)

3. Schema in die neue DB laden:

SUN> dbaccess -e ziel-db-name shema.quell-db-name.20050128 > shema.ziel-db-name.20050128.log 2>&1

4. DB (hier "ziel-db-name") füllen:

4.1. Für sehr kleine Datenmengen direkt Sätze aus der anderen Tabelle übernehmen:

(dbaccess Ziel-DB)

INSERT INTO kleine-tabelle
SELECT * FROM quell-db-name:kleine-tabelle
;

4.2. Für größere Datenmengen mittels unload/load:

4.2.1. Aus der Original-DB Daten unload'en:

(dbaccess Quell-DB)

SET ISOLATION TO DIRTY READ;
 
UNLOAD TO grosse-tabelle.unl
SELECT * FROM grosse-tabelle
;

Damit sind alle Sätze in der Datei "grosse-tabelle.unl".

4.2.2. Die große Datei splitten:

SUN> split -l 10000 grosse-tabelle.unl grosse-tabelle_

Damit werden mehrere Dateien erzeugt: "grosse-tabelle_aa", "grosse-tabelle_ab" u.s.w.

4.2.3. Vor dem Laden Triggers und Indizies für die betroffenen Tabellen abzuschalten:

(dbaccess Ziel-DB)

SET TRIGGERS FOR grosse-tabelle DISABLED;
SET INDEXES FOR grosse-tabelle DISABLED;

4.2.4. Die Daten laden, alle Sätze innerhalb einer Transaktion bei der gelockten Tabelle:

(dbaccess Ziel-DB)

BEGIN WORK;
 
LOCK TABLE grosse-tabelle IN EXCLUSIVE MODE;
 
LOAD FROM grosse-tabelle_aa
INSERT INTO grosse-tabelle
;

Damit ist ein Teil (hier die Datei "grosse-tabelle_aa") der Daten geladen.

4.2.5. Den Teil, falls keine Fehler aufgetreten sind, mit "commit" abschließen:

(dbaccess Ziel-DB)

COMMIT WORK;

(Bei Fehler: mit ROLLBACK WORK;)

Die letzten 2 Schritte solange wiederholen bis alle Dateien geladen sind.

4.2.6. Trigger und Indexe einschalten.

SET INDEXES FOR grosse-tabelle ENABLED;
SET TRIGGERS FOR grosse-tabelle ENABLED;

5. Fertig.

EOF

edv/db/sql/example/komplette_db_kopieren.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki