sql >> Database >  >> RDS >> Oracle

hoe de standby-database te herstellen van een ontbrekend archieflogboek

Een fysieke standby-database is afhankelijk van de continue toepassing van archieflogboeken van een primaire database om daarmee gesynchroniseerd te zijn. In Oracle Database-versies ouder dan 10g moest u in het geval dat een archieflogboek zoekraakte of beschadigd was, de standby-database opnieuw opbouwen. Vanaf 10g kunt u een incrementele back-up van SCN gebruiken en de standby herstellen met hetzelfde om de ontbrekende archieflogboeken te compenseren. Hierin zullen we zien hoe u de standby-database kunt herstellen van een ontbrekend archieflogboek

Dus hier zijn de stappen voor het herstellen van de standby-database van een ontbrekend archieflogboek

Stap 1:

Controleer in de standby-database de huidige SCN

sqlplus "/ as sysdba"
SQL>set numwidth 30;
SQL>select current_scn from v$database;
CURRENT_SCN
-----------
6746747647647

Stap 2 :

Maak op de primaire database de benodigde incrementele back-up van de bovenstaande SCN

rman target /
RMAN> {
allocate channel c1 type disk;
BACKUP INCREMENTAL FROM SCN 6746747647647 DATABASE
FORMAT /tmp/inc_standby_%U';
}

We kunnen parallelle werkers gebruiken om het maken van back-ups te versnellen als de database veel wijzigingen heeft gegenereerd

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';
}

Stap 3:

Annuleer beheerd herstel in de standby-database

sqlplus "/ as sysdba"
SQL>alter database recover managed standby database cancel;
Media recovery complete.

Stap 4:

  • scp de back-upbestanden naar de standby-server naar de map /tmp.
  • Catalogeer de incrementele back-upbestanden in de standby-database
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

Stap 5:

Pas de incrementele back-up toe op de standby-database

rman target /
RMAN>RECOVER DATABASE NOREDO;

Stap 6:

Zet de standby-database terug in de beheerde herstelmodus.

sqlplus "/ as sysdba"
SQL>recover managed standby database disconnect;
Media recovery complete.

Vanuit alert.log zult u merken dat de standby-database nog steeds op zoek is naar de oude logbestanden

FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence ….

Dit komt omdat het controlebestand niet is bijgewerkt. Daarom moet het standby-controlebestand opnieuw worden gemaakt

Stap 7:

Op de primaire maak een nieuw stand-by-controlebestand

sqlplus "/ as sysdba"
SQL> alter database create standby controlfile as ‘/tmp/standby01.ctl’;
System altered.

Stap 8:

Leg gegevensbestandsinformatie vast in de STANDBY-database.
Het stand-by-controlebestand moet worden vernieuwd vanaf de back-up die bij stap #7 is gemaakt. Aangezien de namen van de gegevensbestanden waarschijnlijk anders zijn dan de primaire, moet u de namen van uw standby-gegevensbestandsnamen ter referentie opslaan nadat u het controlebestand hebt hersteld vanaf de primaire back-up. Voer de onderstaande query uit in de standby-database en sla de resultaten op voor verder gebruik.

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

Stap 9:

Kopieer het standby-controlebestand naar de standby-site. Sluit de standby-database af en vervang de standby-besturingsbestanden en start de standby-database opnieuw in de beheerde herstelmodus met behulp van de onderstaande opdracht

RMAN> SHUTDOWN IMMEDIATE ;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/standby01.ctl';

Stap 10:

Monteer de stand-by

RMAN> ALTER DATABASE MOUNT;

Stap 11:

Deze stap is vereist als de locatie van de gegevensbestanden verschilt in stand-by en primair

Als de primaire en standby identieke structuur en namen van gegevensbestanden hebben, kan deze stap worden overgeslagen.

Oracle raadt aan de incarnatie te controleren op primair en stand-by voordat u deze stap voltooit.

example:  
RMAN> list incarnation; 

Aangezien we het controlfile van PRIMARY hebben hersteld, zullen de locatienamen van de datafiles in dit herstelde STANDBY controlfile dezelfde zijn als die van de PRIMARY database. Als de directorystructuur verschilt tussen de standby- en primaire databases of als u OMF beheerde bestandsnamen van Oracle gebruikt, kan het de standby-bestanden niet identificeren. Dus we kunnen de STANDBY-gegevensbestanden catalogiseren met RMAN om de hernoemingsbewerking uit te voeren.

Voer de onderstaande stap in STANDBY uit voor elke schijfgroep (of directory) waar de standby-gegevensbestanden zich bevinden.

RMAN> CATALOG START WITH '+DATA/STBY/datafile/';

Als er gegevensbestanden zijn toegevoegd aan de primaire NA de back-up SCN (in ons voorbeeld scn 6746747647647), worden die gegevensbestanden niet automatisch op de standby-server gemaakt, ongeacht de parameterinstelling van standby_file_management. De toegevoegde gegevensbestanden moeten worden hersteld naar de standby-server. Om te bepalen of er bestanden zijn toegevoegd aan Primair sinds de stand-by huidige SCN

SQL>SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 6746747647647

Als het rijen retourneert, moeten we die bestanden herstellen van primair naar stand-by

RMAN> backup datafile <missing-1>,<missing-2> ,<missing-3> , format '/tmp/ForStandby_%U' tag 'FORSTANDBY';

Kopieer deze naar stand-by en catalogiseer ze en herstel ze

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,….;
}

Nu kunnen we de database omschakelen naar kopiëren

RMAN> SWITCH DATABASE TO COPY;

Als de bovenstaande query terugkeert met 0 nul rijen

RMAN> SWITCH DATABASE TO COPY;

Stap 11

Op STANDBY  database, wis alle standby-loggroepen voor opnieuw uitvoeren:

SQL> selecteer GROUP# uit v$logfile waar TYPE='STANDBY' groepeert op GROUP#;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
SQL> DATABASE WIJZIGEN LOGBESTAND WISSEN GROEP 3;
….

Stap 12

Nu kunt u de MRP starten

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Ik hoop dat je deze gedetailleerde stappen leuk vindt om een ​​standby-database te herstellen van een ontbrekend archieflogboek. Geef alstublieft de feedback. Er kan een fout zijn gemaakt.

Leest ook
Niet-ASM naar ASM
hoe vind je het volgnummer van het archieflogboek in oracle
hoe controleer je waarschuwingslogfouten in oracle
RMAN-back-upopdrachten
RMAN Lijst-back-upopdrachten
Uit te voeren stappen voor het doorsturen van een fysieke standby-database met behulp van RMAN incrementele back-up. (Doc-ID 836986.1)


  1. Hoe installeer ik de Python MySQLdb-module met pip?

  2. Reset root-wachtwoord van MySQL

  3. Een ORA 028513 DG4ODBC-fout onderzoeken

  4. Queryresultaten exporteren naar .csv of door tabs gescheiden bestand in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 23