Eine physische Standby-Datenbank ist auf die kontinuierliche Anwendung von Archivprotokollen aus einer primären Datenbank angewiesen, um mit ihr synchron zu sein. In Oracle Database-Versionen vor 10g mussten Sie im Falle eines fehlenden oder beschädigten Archivprotokolls die Standby-Datenbank von Grund auf neu erstellen. Ab 10g können Sie ein inkrementelles Backup von SCN verwenden und die Standby-Datenbank mit derselben wiederherstellen, um die fehlenden Archivprotokolle zu kompensieren. Darin werden wir sehen, wie die Standby-Datenbank aus einem fehlenden Archivprotokoll wiederhergestellt wird
Hier sind also die Schritte zum Wiederherstellen der Standby-Datenbank aus einem fehlenden Archivprotokoll
Schritt 1:
Überprüfen Sie in der Standby-Datenbank den aktuellen SCN
sqlplus "/ as sysdba" SQL>set numwidth 30; SQL>select current_scn from v$database; CURRENT_SCN ----------- 6746747647647
Schritt 2 :
Erstellen Sie auf der primären Datenbank die erforderliche inkrementelle Sicherung aus dem obigen SCN
rman target / RMAN> { allocate channel c1 type disk; BACKUP INCREMENTAL FROM SCN 6746747647647 DATABASE FORMAT /tmp/inc_standby_%U'; }
Wir können parallele Worker verwenden, um die Backup-Erstellung zu beschleunigen, wenn die Datenbank viele Änderungen generiert hat
run {allocate channel d1 type disk; allocate channel d2 type disk; allocate channel d3 type disk; allocate channel d4 type disk; allocate channel d5 type disk; allocate channel d6 type disk; allocate channel d7 type disk; allocate channel d8 type disk; allocate channel d9 type disk; allocate channel d10 type disk; BACKUP INCREMENTAL FROM SCN 6746747647647 DATABASE FORMAT /tmp/inc_standby_%U'; }
Schritt 3:
Abbrechen der verwalteten Wiederherstellung in der Standby-Datenbank
sqlplus "/ as sysdba" SQL>alter database recover managed standby database cancel; Media recovery complete.
Schritt 4:
- scp die Sicherungsdateien auf den Standby-Server in den /tmp-Ordner.
- Katalogisieren Sie die inkrementellen Sicherungsdateien in der Standby-Datenbank
rman target / RMAN> CATALOG START WITH '/tmp/'; searching for all files that match the pattern /tmp/ List of Files Unknown to the Database =====================================…… Do you really want to catalog the above files (enter YES or NO)? YES cataloging files… cataloging done
Schritt 5:
Wenden Sie die inkrementelle Sicherung auf die Standby-Datenbank an
rman target / RMAN>RECOVER DATABASE NOREDO;
Schritt 6:
Setzen Sie die Standby-Datenbank wieder in den verwalteten Wiederherstellungsmodus.
sqlplus "/ as sysdba" SQL>recover managed standby database disconnect; Media recovery complete.
Aus der alert.log werden Sie feststellen, dass die Standby-Datenbank immer noch nach den alten Protokolldateien sucht
FAL[client]: Failed to request gap sequence GAP - thread 1 sequence ….
Dies liegt daran, dass die Steuerdatei nicht aktualisiert wurde. Daher muss die Standby-Steuerdatei neu erstellt werden
Schritt 7:
Erstellen Sie auf der Primärseite eine neue Standby-Steuerdatei
sqlplus "/ as sysdba" SQL> alter database create standby controlfile as ‘/tmp/standby01.ctl’; System altered.
Schritt 8:
Erfassen Sie Datendateiinformationen in der STANDBY-Datenbank.
Die Standby-Steuerdatei muss aus der in Schritt 7 erstellten Sicherung aktualisiert werden. Da sich die Datendateinamen wahrscheinlich von denen der primären unterscheiden, speichern Sie die Namen Ihrer Standby-Datendateien als Referenz, nachdem Sie die Steuerdatei aus der primären Sicherung wiederhergestellt haben. Führen Sie die folgende Abfrage in der Standby-Datenbank aus und speichern Sie die Ergebnisse zur weiteren Verwendung.
spool standby_datafile_names.txt
set pagesize 1000;
set lines 200
col name format a60
select file#, name from v$datafile order by file# ;
spool off
Schritt 9:
Kopieren Sie die Standby-Steuerdatei auf die Standby-Site. Fahren Sie die Standby-Datenbank herunter, ersetzen Sie die Standby-Steuerdateien und starten Sie die Standby-Datenbank im verwalteten Wiederherstellungsmodus mit dem folgenden Befehl neu
RMAN> SHUTDOWN IMMEDIATE ; RMAN> STARTUP NOMOUNT; RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/standby01.ctl';
Schritt 10:
Mounten Sie den Standby
RMAN> ALTER DATABASE MOUNT;
Schritt 11:
Dieser Schritt ist erforderlich, wenn sich die Speicherorte der Datendateien in Standby und Primary unterscheiden
Wenn die Primär- und die Standby-Datei identische Struktur- und Datendateinamen haben, kann dieser Schritt übersprungen werden.
Oracle empfiehlt, die Inkarnation auf Primary und Standby zu überprüfen, bevor Sie diesen Schritt ausführen.
example:
RMAN> list incarnation;
Da wir die Steuerdatei von PRIMARY wiederhergestellt haben, sind die Datendatei-Speicherortnamen in dieser wiederhergestellten STANDBY-Steuerdatei die gleichen wie die der PRIMARY-Datenbank. Wenn die Verzeichnisstruktur zwischen der Standby- und der Primärdatenbank unterschiedlich ist oder wenn Sie von Oracle verwaltete Dateinamen OMF verwenden, kann es die Standby-Dateien nicht identifizieren. So können wir die STANDBY-Datendateien mit RMAN katalogisieren, um die Umbenennungsoperation auszuführen.
Führen Sie den folgenden Schritt in STANDBY für jede Laufwerksgruppe (oder jedes Verzeichnis) aus, in dem sich die Standby-Datendateien befinden.
RMAN> CATALOG START WITH '+DATA/STBY/datafile/';
Wenn Datendateien NACH dem Sicherungs-SCN (in unserem Beispiel scn 6746747647647) zum primären Server hinzugefügt wurden, werden diese Datendateien unabhängig von der Einstellung des Parameters standby_file_management nicht automatisch auf dem Standby-Server erstellt. Die hinzugefügten Datendateien müssen auf dem Standby-Server wiederhergestellt werden. Um festzustellen, ob seit dem Standby-Strom-SCN irgendwelche Dateien zu Primary hinzugefügt wurden
SQL>SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 6746747647647
Wenn es Zeilen zurückgibt, müssen wir diese Dateien von der primären in die Standby-Datei wiederherstellen
RMAN> backup datafile <missing-1>,<missing-2> ,<missing-3> , format '/tmp/ForStandby_%U' tag 'FORSTANDBY';
Kopieren Sie diese in den Standby-Modus und katalogisieren und stellen Sie sie dann wieder her
CATALOG START WITH '/tmp/ForStandby'; run { set newname for datafile X to '+DISKGROUP'; set newname for datafile Y to '+DISKGROUP'; set newname for datafile Z to '+DISKGROUP'; etc. restore datafile x,y,z,….; }
Jetzt können wir die Datenbank auf Kopieren umstellen
RMAN> SWITCH DATABASE TO COPY;
Wenn die obige Abfrage mit 0 Nullzeilen zurückgibt
RMAN> SWITCH DATABASE TO COPY;
Schritt 11
Auf STANDBY Datenbank, löschen Sie alle Standby-Redo-Log-Gruppen:
SQL> select GROUP# from v$logfile where TYPE='STANDBY' group by GROUP#;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;
….
Schritt 12
Jetzt können Sie die Bedarfsplanung starten
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
Ich hoffe, Ihnen gefallen diese detaillierten Schritte zur Wiederherstellung einer Standby-Datenbank aus einem fehlenden Archivprotokoll. Bitte geben Sie das Feedback. Möglicherweise liegt ein Fehler vor.
Liest auch
Non ASM zu ASM
So finden Sie die Sequenznummer des Archivprotokolls in Oracle
So überprüfen Sie Warnprotokollfehler in Oracle
RMAN-Sicherungsbefehle
RMAN-Listensicherungsbefehle
/>Durchzuführende Schritte für die aktualisierende Wiederherstellung einer physischen Standby-Datenbank mit RMAN Incremental Backup. (Dok.-ID 836986.1)