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-databasensqlplus "/ 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)