
Ich bin ein SQL Server DBA und habe vor kurzem die Verantwortung für eine Oracle-Umgebung übernommen. (11g)
Jetzt mache ich zeitgesteuerte Backups meiner Transaktionsprotokolle auf SQL Server und migriere sie dann auf einen anderen Server. Das würde ich auch gerne mit Oracle machen.
Die Redo-Protokolle von Oracle scheinen größenbasiert zu sein, bevor sie umgeschaltet werden und der Server sie archivieren kann.
Kann jemand einige Tipps/bewährte Vorgehensweisen dazu geben, wie dies erreicht werden kann?
Ich würde mich auch über Ratschläge zur Dimensionierung der Redo-Protokolle und zum Umgang mit Änderungen der Nutzungsmuster im Tagesverlauf freuen.
Ich habe vergessen zu sagen, dass dies auf einem Redhat 5 Enterprise-Server ist
Antwort1
Der erste Vorschlag besteht darin, niemals manuell damit herumzuspielen, es sei denn, Sie wissen wirklich, was Sie tun.
Sie sollten sich über rman
, das Oracle-Tool zum Durchführen von Backups (einschließlich Redo-Log-Backups), informieren. Ich würde Ihnen dringend empfehlen, dies gründlich zu recherchieren, um sicherzustellen, dass Sie die verschiedenen Aspekte von Oracle-Backups vollständig verstehen, bevor Sie Maßnahmen ergreifen.
Im Allgemeinen sollten die Oracle-Redo-/Archivprotokolle dort verbleiben, wo sie geschrieben wurden, bis Sie ein Backup durchgeführt haben. Das Backup wird normalerweise so eingerichtet, dass es die Archivprotokolle enthält, die zusammen mit dem Datenbank-Backup erforderlich sind.
Die Größe der Redo-Protokolle richtet sich direkt nach dem Volumen der Datenbankänderungstransaktionen. Je mehr Änderungen, desto größer das Protokollvolumen. Dies hängt sehr stark von Ihren Anwendungen und Ihrer Nutzung ab, daher empfehle ich Ihnen, Statistiken darüber aufzuzeichnen (Transaktionsvolumen, Größe des Transaktionsprotokolls, Datenbankgröße usw., alles mit Zeitstempeln). Sobald Sie Daten für einige Wochen haben, können Sie beginnen, Aktivitäten mit Protokollen zu korrelieren und daraus einige gültige Schätzungen abzuleiten.
Bearbeiten: Ich glaube, ich habe die ursprüngliche Frage teilweise missverstanden. Ich glaube, Sie fragen nach einer Möglichkeit, Ihre Redo-Protokolle grundsätzlich auf den aktuellen Zeitpunkt zu überprüfen, wenn Sie ein Backup ausführen, damit Sie mit Ihrem Backup bis zum Zeitpunkt des Backup-Starts vollständig konsistent sind.
Und rman erledigt tatsächlich die ganze Drecksarbeit für Sie. Aus der rman-Dokumentation:
Wenn Sie eine Sicherung archivierter Redo-Logs erstellen, die das aktuellste Log enthält (d. h. ein BACKUP ... ARCHIVELOG-Befehl wird ohne die Option UNTIL oder SEQUENCE ausgeführt), und die Datenbank geöffnet ist, schaltet RMAN vor Beginn der Sicherung aus der aktuellen Online-Redo-Log-Gruppe und allen Online-Redo-Logs aus, die noch nicht archiviert wurden, bis einschließlich der Redo-Log-Gruppe, die zum Zeitpunkt der Befehlsausgabe aktuell war. Dadurch wird sichergestellt, dass die Sicherung alle Redos enthält, die vor dem Start des Befehls generiert wurden.
Und noch ein kleiner Hinweis, der etwas mehr Einzelheiten liefert:
Sie können archivierte Redo-Protokolle zu einem Backup anderer Dateien hinzufügen, indem Sie die Klausel BACKUP ... PLUS ARCHIVELOG verwenden. Das Hinzufügen von BACKUP ... PLUS ARCHIVELOG bewirkt, dass RMAN Folgendes tut:
- Führt den Befehl ALTER SYSTEM ARCHIVE LOG CURRENT aus.
- Führt BACKUP ARCHIVELOG ALL aus. Beachten Sie, dass RMAN bei aktivierter Sicherungsoptimierung Protokolle überspringt, die bereits auf dem angegebenen Gerät gesichert wurden.
- Sichert den Rest der im BACKUP-Befehl angegebenen Dateien.
- Führt den Befehl ALTER SYSTEM ARCHIVE LOG CURRENT aus.
- Sichert alle verbleibenden archivierten Protokolle, die während der Sicherung generiert wurden.
Dadurch wird gewährleistet, dass die während des Befehls erstellten Datendateisicherungen in einem konsistenten Zustand wiederhergestellt werden können.
Die Rman-Dokumentation sollte Ihnen weitere Einzelheiten liefern können. Ich würde die URL angeben, von der ich das habe (Online-Oracle Rman-Dokumente), aber die URL hat sich seit dem Zeitpunkt, als ich sie als Lesezeichen gespeichert habe, bereits geändert, daher vertraue ich nicht darauf, dass sie bestehen bleibt. Wenn Sie nach Rman-Dokumenten googeln, sollten Sie sie jedoch finden können.
Edit: Eines wollte ich noch hinzufügen. Sie haben etwas über die Dimensionierung erwähnt. Oracle 11g unterstützt komprimierte Redo-Logs. Ich habe sie selbst nicht verwendet, aber ich weiß, dass sie unterstützt werden. Darüber hinaus unterstützen Oracle 10g und 11g komprimierte Backups. Wenn Sie noch keine komprimierten Backups durchführen,du solltest sein. Die Größenreduzierung ist enorm und darüber hinaus konnten wir auch bei Sicherungsläufen eine deutliche Leistungssteigerung erzielen, als wir komprimierte Sicherungen aktivierten.
Antwort2
Die Redo-Protokolle von Oracle scheinen größenbasiert zu sein, bevor sie umgeschaltet werden und der Server sie archivieren kann.
Sehen Sie sich den Parameter archive_lag_target für Oracle 9i und höher an.
Antwort3
Es ist ein Kompromiss. Ich habe gehört, dass große Protokolldateien effizienter sind, aber wir verwenden sie nicht, weil A) je größer der Verlust einer Datei, desto größer der Verlust Ihrer Daten und B) unsere Bandbreite Mist ist
Dies führt dazu, dass wir einige Stunden lang Dateien spoolen und dann Updates auf die verschiedenen Standby-Rechner übertragen und ausführen. Wir verwenden tatsächlich immer noch Oracle8i, und da die Datenbank vor langer Zeit von jemandem entwickelt wurde, der kein DBA war, muss ich immer noch manuell neue Datendateien und Steuerdateien erstellen. /seufz
Antwort4
Es ist schon eine Weile her, seit ich das gefragt habe, aber ich habe vor Kurzem die Antwort gefunden. Ab Oracle 10G R2 gibt es einen Parameter, der sicherstellt, dass ein Protokollwechsel nicht länger als die angegebene Zeit dauert.
Wenn Sie das System ändern, setzen Sie archive_lag_target=900;
Dadurch wird sichergestellt, dass der Wechsel alle 15 Minuten erfolgt, unabhängig von der verwendeten Protokollmenge.