====== 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