Wie kann ich die IBM DB2-Datenbank online sichern?

7

Ich habe versucht, die IBM DB2 (LUW) -Datenbank mit diesem Befehl zu sichern:

./db2 backup database DBEMP to /home/user1/db2bkup

Aber ich habe diese Nachricht erhalten:

SQL1035N Die Datenbank wird derzeit verwendet. SQLSTATE = 57019

Dann habe ich das versucht:

./db2 backup database DBEMP online to /home/user1/db2bkup

Und ich habe diese Nachricht erhalten:

SQL2413N Online-Sicherung ist nicht zulässig, da die Datenbank nicht wiederhergestellt werden kann oder eine ausstehende Sicherungsbedingung vorliegt.

Was bedeutet das? Gibt es eine alternative Möglichkeit, die Datenbank online zu sichern? Ich kann die Datenbank nicht stoppen, weil sie verwendet wird.

Null
quelle
Hier sind meine Notizen zur Sicherung und Wiederherstellung von DB2. Ich habe versucht, kurz die Antwort zu erklären, nach der Sie suchen, und weitere solche Notizen - amolnpujari.wordpress.com/2009/08/29/…
Amol Pujari

Antworten:

9

Leider ist es nicht möglich , eine Online - Sicherung von einer DB2 - Datenbank zu übernehmen , wenn es in ist die Umlaufprotokollierung - Modus , der die Standardeinstellung für DB2 - Datenbanken ist , wenn sie erstellt werden.

Sie können überprüfen, ob Ihre Datenbank die Umlaufprotokollierung verwendet, indem Sie Folgendes ausgeben:

./db2 get db cfg for dbemp | grep LOGARCH

Wenn beide LOGARCHMETH-Optionen ausgeschaltet sind ...

First log archive method       (LOGARCHMETH1) = OFF
Second log archive method      (LOGARCHMETH2) = OFF

... dann müssen Sie Ihre Datenbankkonfiguration ändern, um die Archivprotokollierung zu verwenden, bevor Sicherungen durchgeführt werden können. Ich bin mir nicht 100% sicher, aber ich glaube, Sie müssen Ihre Datenbank neu starten und eine Offline-Sicherung erstellen, bevor Sie mit der Erstellung von Online-Sicherungen beginnen können.

Eine Übersicht dazu finden Sie in der Dokumentation "Konfigurieren der Datenbankprotokollierungsoptionen" von IBM .

Beachten Sie, dass Sie beim Wechsel von CIRCULAR LOGGING zu ARCHIVE LOGGING herausfinden müssen, wie Sie mit Ihren archivierten Protokolldateien umgehen sollen. Das Speichern auf SAN / NAS / Tape, um eine Roll-Forward-Wiederherstellung zu ermöglichen, kann eine gute Idee sein, wenn diese Daten für Sie wichtig sind.

Nathan Jolly
quelle
1
Wir müssen also nur LOGARCHMETH1 einrichten, oder? Gibt es Nachteile oder Komplikationen beim Einrichten des LOGARCHMETH1? Ist es besser, DISK oder TSM für den Parameter LOGARCHMETH1 zu verwenden?
null
1
Es ist wahrscheinlich, dass TSM nicht installiert wird und Sie DISK verwenden möchten (Wenn ein Tivoli Storage Management-Dienst (TSM) ausgeführt wird, würde ich empfehlen, mit den Personen zu sprechen, die sich darum kümmern). Der Nachteil beim Einrichten der Archivprotokollierung besteht darin, dass Sie mit der Pflege (Archivierung oder Löschung) der Dateien in Ihrem neuen Archivprotokollverzeichnis beginnen müssen. Dies bedeutet auch, dass DB2 am Ende eines Protokolls etwas mehr Arbeit zu erledigen hat Datei. Die Vorteile sollten die Kosten überwiegen. Wie Ian Bjorhovde vorgeschlagen hat, ist es ratsam, die Funktionsweise von Backup / Recovery etwas genauer zu lesen.
Nathan Jolly
1
Sie haben Recht, wenn Sie zuerst eine Offline-Sicherung benötigen. Das Verwalten von Protokollen (und Sicherungen) können Sie tatsächlich mit anderen (drei) Parametern durchführen. Wenn AUTO_DEL_REC_OBJ auf ON gesetzt ist, werden Ihre (vollständigen) Sicherungen sowohl online als auch offline sowie Ihre archivierten Protokolle verwaltet. NUM_DB_BACKUPS teilt DB2 mit, wie viele vollständige Sicherungen aufbewahrt werden sollen, und REC_HIS_RETENTN teilt DB2 mit, wie viele Tage Sie den für NUM_DB_BACKUPS festgelegten Wert beibehalten möchten. Das nutzen wir in unserem Shop. Wir haben zweimal am Tag online und einmal pro Woche offline geschaltet. Wir speichern 3 Backups für 2 Tage. Funktioniert super!
Chris Aldrich
1
Der Zweck der Online-Sicherung besteht darin, dass ich eine Anwendung entwickle, die eine Verbindung zum Remote-IBM DB2-Server herstellt, der auch von vielen Entwicklern verbunden wird. Ich möchte eine Datenbank von der Remote-DB2 sichern und in meiner lokalen DB2 (Express-C-Version) wiederherstellen, da ich die lokale DB2 für die Entwicklung verwenden möchte. Es handelt sich nicht um eine routinemäßige Datenbanksicherung, die normalerweise in der Produktion durchgeführt wird. Ist dieser Befehl also genug? => db2 update db configuration for DBEMP using logarchmeth1 disk:F:/dbemp/archived_logs(Hinweis: Mein Computer-Betriebssystem ist Windows)
null
1
Ja, außer dass Sie möglicherweise die Festplatte einschließen müssen: F: / dbemp / archived_logs in einfachen Anführungszeichen, je nachdem, wie Ihr Betriebssystem mit der Befehlszeile für DB2 interagiert. Ich weiß, ich muss auf AIX.
Chris Aldrich
4

Für Online-Sicherungen muss die Datenbank für die fortlaufende Wiederherstellung aktiviert sein. Dies ist jedoch nicht die Standardeinstellung, wenn Sie eine Datenbank erstellen.

Um dies zu tun, müssen Sie den festlegen LOGARCHMETH1Datenbank - Konfigurationsparameter . Sobald Sie dies getan haben, müssen Sie eine Offline-Sicherung erstellen (dh es können keine Benutzer verbunden werden).

Sobald Sie diese Schritte ausgeführt haben, können Sie Online-Backups nach Ihren Wünschen ausführen.

Möglicherweise möchten Sie einige Zeit damit verbringen, den Abschnitt Datenwiederherstellung im Handbuch zur DB2-Datenbankverwaltung zu lesen , um sich mit DB2 Backup / Recovery vertraut zu machen.

Ian Bjorhovde
quelle
1
Wir müssen also nur LOGARCHMETH1 einstellen, oder? Gibt es irgendwelche Komplikationen beim Einrichten des LOGARCHMETH1?
null