PDA

View Full Version : Schmea kopieren DB2 for i 7.1



Duriel
19-02-16, 10:19
Hallo da ich in der Dokumentation zur System i nicht fündig werde, frage ich nochmals hier:

wie kopiere ich ein Schema innerhalb der DB2?

Am besten per CL-Befehl?!

Fuerchau
19-02-16, 10:49
Wenn das "Schema" nur eine Bibliothek ohne die SYSxxx-Dateien ist, dann müsste ein CPYLIB reichen.
Hast du die Lib tatsächlich per SQL mit Create Schema erstellt dann geht das leider nicht so einfach.
Allerdings kannst du per RUNSQL direkt SQL-Befehle ausführen und ein neues Schema erstellen.
Anschließend per CRTDUPOBJ die Objekte (ggf. mit Daten) kopieren.
Die SYS-Dateien sind natürlich auszuschließen. Dafür kann man sich per DSPOBJD halt eine Liste in einer PF generieren lassen.

Ob ein SAVLIB->RSTLIB mit anderer Ziellib funktioniert bleibt auszuprobieren.
Die SYSxxx-Dateien sind nämlich Views auf die QSYS/SYSxxx mit einem Select auf die eigene Lib. Und ob die beim Restore neu generiert werden.

Christian Bartels
26-02-16, 11:40
Nach dem SAVLIB/RSTLIB zeigen die Katalogsichten SYSTABLES etc. weiterhin auf die alte Bibliothek. Es gibt zwei Möglichkeiten, die Kataloge glattzuziehen:

Wenn der RSTLIB mit anderer Zielbibliothek bereits gelaufen ist, kann man die Katalogsichten mit den beiden folgenden Befehlen löschen und neu erstellen:

CALL QSYS2/QSQXRLF PARM(DLT <Bibliotheksname>)
CALL QSYS2/QSQXRLF PARM(CRT <Bibliotheksname>)

Wenn man erst vorhat, die Bibliothek mit RSTLIB zurückzuspielen und dabei umzubenennen, kann man auch zuerst über interaktives SQL mit CREATE SCHEMA oder CREATE COLLECTION eine leere Bibliothek mit Katalogsichten anlegen und dann beim RSTLIB mit dem Parameter OPTION(*NEW) angeben, dass die bereits vorhanden (und in der Sicherung falschen) Katalogsichten nicht zurückgespielt werden sollen.

Mit freundlichen Grüßen,
Christian Bartels.