Oracle
 sql >> Datenbank >  >> RDS >> Oracle

wie man die Standby-Datenbank aus einem fehlenden Archivprotokoll wiederherstellt

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)