sql >> Database teknologi >  >> RDS >> Oracle

hvordan man genopretter standby-database fra en manglende arkivlog

En fysisk standby-database er afhængig af den kontinuerlige anvendelse af arkivlogfiler fra en primær database for at være synkroniseret med den. I Oracle Database-versioner før 10g i tilfælde af at en arkivlog forsvandt eller beskadiget, var du nødt til at genopbygge standby-databasen fra bunden. Fra 10g kan du bruge en trinvis sikkerhedskopi fra SCN og gendanne standbyen ved at bruge den samme for at kompensere for de manglende arkivlogfiler. I dette vil vi se, hvordan du gendanner standbydatabase fra en manglende arkivlog

Så her er trinene til, hvordan man genopretter standby-database fra en manglende arkivlog

Trin 1:

Kontroller det aktuelle SCN

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

Trin 2 :

På den primære database skal du oprette den nødvendige trinvise backup fra ovenstående SCN

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

Vi kan bruge parallelle arbejdere til at fremskynde oprettelsen af ​​backup, hvis databasen har genereret mange ændringer

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

Trin 3:

Annuller administreret gendannelse i standby-databasen

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

Trin 4:

  • scp sikkerhedskopifilerne til standby-serveren til /tmp-mappen.
  • Katalogér de inkrementelle sikkerhedskopieringsfiler i standbydatabasen
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

Trin 5:

Anvend den trinvise sikkerhedskopiering til standby-databasen

rman target /
RMAN>RECOVER DATABASE NOREDO;

Trin 6:

Sæt standby-databasen tilbage til administreret gendannelsestilstand.

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

Fra alert.log vil du bemærke, at standby-databasen stadig leder efter de gamle logfiler

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

Dette skyldes, at kontrolfilen ikke er blevet opdateret. Derfor skal standby-kontrolfilen genskabes

Trin 7:

På den primære opret ny standby kontrolfil

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

Trin 8:

Indfang datafiloplysninger i STANDBY-databasen.
Standby-kontrolfilen skal opdateres fra sikkerhedskopien taget i trin #7. Da datafilnavnene sandsynligvis er anderledes end primære, skal du gemme navnene på dine standby-datafilnavne til reference efter gendannelse af kontrolfilen fra den primære sikkerhedskopi. Kør nedenstående forespørgsel i standby-databasen og gem resultaterne til videre brug.

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

Trin 9:

Kopier standby-kontrolfilen til standby-stedet. Luk standby-databasen og udskift standby-kontrolfilerne og genstart standby-databasen i administreret gendannelsestilstand ved hjælp af nedenstående kommando

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

Trin 10:

Monter standby

RMAN> ALTER DATABASE MOUNT;

Trin 11:

Dette trin er påkrævet, hvis placeringen af ​​datafilerne er forskellig i standby og Primær

Hvis den primære og standby-enhed har identiske struktur- og datafilnavne, kan dette trin springes over.

Oracle anbefaler, at du tjekker inkarnationen for primær og standby, før du udfører dette trin.

example:  
RMAN> list incarnation; 

Da vi har gendannet kontrolfilen fra PRIMÆR, vil datafilplaceringsnavnene i denne gendannede STANDBY-kontrolfil være de samme som i PRIMÆR-databasen. Hvis mappestrukturen er forskellig mellem standby- og primære databaser, eller hvis du bruger Oracle-administrerede filnavne OMF, vil den ikke være i stand til at identificere standby-filerne. Så vi kan katalogisere STANDBY-datafilerne med RMAN for at udføre omdøbningsoperationen.

Udfør nedenstående trin i STANDBY for hver diskgruppe (eller mappe), hvor standbydatafilerne findes.

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

Hvis nogen datafiler er blevet føjet til den primære EFTER backup-SCN'en (i vores eksempel, scn 6746747647647), vil disse datafiler ikke blive oprettet automatisk på standby-serveren uanset indstillingen for parameterindstillingen for standby_file_management. De tilføjede datafiler skal gendannes til standby-serveren. For at afgøre, om der er blevet tilføjet filer til Primær siden standby-aktuelle SCN

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

Hvis det returnerer nogle rækker, så er vi nødt til at gendanne disse filer fra primær til standby

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

Kopier disse til standby, og katalogiser og gendan dem derefter

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 kan vi skifte database til kopiering

RMAN> SWITCH DATABASE TO COPY;

Hvis ovenstående forespørgsel returnerer med 0 nul rækker

RMAN> SWITCH DATABASE TO COPY;

Trin 11

På STANDBY  database, ryd alle standby-redo-loggrupper:

SQL> vælg GROUP# fra v$logfile hvor TYPE='STANDBY' gruppe efter GROUP#;
SQL> ALTER DATABASE RYD LOGFILE GROUP 1;
SQL> ALTER DATABASE RYD LOGFILE GROUP 2;
SQL> ALTER DATABASE RYD LOGFILE GROUP 3;
….

Trin 12

Nu kan du starte MRP

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Håber du kan lide disse detaljerede trin til, hvordan du genopretter en standby-database fra en manglende arkivlog. Giv venligst feedback. Der kan være en fejl.

Læser også
Ikke ASM til ASM
hvordan man finder arkivlogsekvensnummer i Oracle
hvordan man kontrollerer alarmlogfejl i Oracle
RMAN backup-kommandoer
RMAN List backup-kommandoer
Trin til at udføre for at rulle frem en fysisk standby-database ved hjælp af RMAN Incremental Backup. (Dok. ID 836986.1)


  1. Sådan fungerer LOCATE()-funktionen i MySQL

  2. Hvad er MySQL-ækvivalenten til PostgreSQL's EXPLAIN ANALYZE

  3. SQLite-undtagelse under forsøg på at slette række

  4. Introduktion af ny funktion:Always On Availability Group