Un database Physical Standby si basa sull'applicazione continua dei registri di archivio da un database primario per essere sincronizzato con esso. Nelle versioni di Oracle Database precedenti a 10g, in caso di un registro di archivio scomparso o danneggiato, è stato necessario ricostruire da zero il database di standby. Da 10g puoi utilizzare un backup incrementale da SCN e ripristinare lo standby utilizzando lo stesso per compensare i log di archivio mancanti. In questo, vedremo come recuperare il database di standby da un log di archivio mancante
Quindi, ecco i passaggi su come recuperare il database in standby da un registro di archivio mancante
Passaggio 1:
Sul database di standby controlla l'SCN corrente
sqlplus "/ as sysdba" SQL>set numwidth 30; SQL>select current_scn from v$database; CURRENT_SCN ----------- 6746747647647
Passaggio 2 :
Sul database primario creare il backup incrementale necessario dall'SCN di cui sopra
rman target / RMAN> { allocate channel c1 type disk; BACKUP INCREMENTAL FROM SCN 6746747647647 DATABASE FORMAT /tmp/inc_standby_%U'; }
Possiamo utilizzare i lavoratori paralleli per velocizzare la creazione del backup se il database ha generato molte modifiche
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'; }
Passaggio 3:
Annulla il ripristino gestito nel database di standby
sqlplus "/ as sysdba" SQL>alter database recover managed standby database cancel; Media recovery complete.
Passaggio 4:
- scp i file di backup sul server di standby nella cartella /tmp.
- Catalogare i file di backup incrementali nel database di standby
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
Passaggio 5:
Applica il backup incrementale al database di standby
rman target / RMAN>RECOVER DATABASE NOREDO;
Passaggio 6:
Riporta il database in standby in modalità di ripristino gestito.
sqlplus "/ as sysdba" SQL>recover managed standby database disconnect; Media recovery complete.
Da alert.log noterai che il database in standby sta ancora cercando i vecchi file di registro
FAL[client]: Failed to request gap sequence GAP - thread 1 sequence ….
Ciò è dovuto al fatto che il file di controllo non è stato aggiornato. Quindi il controlfile di standby deve essere ricreato
Passaggio 7:
Sul primario crea un nuovo file di controllo standby
sqlplus "/ as sysdba" SQL> alter database create standby controlfile as ‘/tmp/standby01.ctl’; System altered.
Passaggio 8:
Acquisisci informazioni sul file di dati nel database STANDBY.
Il file di controllo in standby dovrà essere aggiornato dal backup eseguito al passaggio n. 7. Poiché è probabile che i nomi dei file di dati siano diversi da quelli primari, salvare i nomi dei file di dati di standby come riferimento dopo aver ripristinato il file di controllo dal backup primario. Esegui la query seguente nel database di standby e salva i risultati per un ulteriore utilizzo.
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
Passaggio 9:
Copiare il file di controllo di standby nel sito di standby. Arrestare il database in standby e sostituire i file di controllo in standby e riavviare il database in standby nella modalità di ripristino gestito utilizzando il comando seguente
RMAN> SHUTDOWN IMMEDIATE ; RMAN> STARTUP NOMOUNT; RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/standby01.ctl';
Passaggio 10:
Monta lo standby
RMAN> ALTER DATABASE MOUNT;
Passaggio 11:
Questo passaggio è necessario se la posizione dei file di dati è diversa in standby e Primaria
Se il primario e lo standby hanno la stessa struttura e nomi di file di dati, questo passaggio può essere saltato.
Oracle consiglia di controllare l'incarnazione per primaria e standby prima di completare questo passaggio.
example:
RMAN> list incarnation;
Poiché abbiamo ripristinato il file di controllo da PRIMARY, i nomi di posizione del file di dati in questo file di controllo STANDBY ripristinato saranno gli stessi del database PRIMARY. Se la struttura della directory è diversa tra il database di standby e quello primario o se si utilizzano i nomi di file gestiti da Oracle OMF, non sarà in grado di identificare i file di standby. Quindi possiamo catalogare i file di dati STANDBY con RMAN per eseguire l'operazione di ridenominazione.
Esegui il passaggio seguente in STANDBY per ogni gruppo di dischi (o directory) in cui risiedono i file di dati in standby.
RMAN> CATALOG START WITH '+DATA/STBY/datafile/';
Se dei file di dati sono stati aggiunti al primario DOPO l'SCN di backup (nel nostro esempio, scn 6746747647647), tali file di dati non verranno creati automaticamente sul server di standby indipendentemente dall'impostazione del parametro standby_file_management. I file di dati aggiunti dovranno essere ripristinati sul server di standby. Per determinare se sono stati aggiunti file a Primario dall'SCN corrente in standby
SQL>SELECT FILE#, NAME FROM V$DATAFILE WHERE CREATION_CHANGE# > 6746747647647
Se restituisce delle righe, dobbiamo ripristinare quei file dal primario allo standby
RMAN> backup datafile <missing-1>,<missing-2> ,<missing-3> , format '/tmp/ForStandby_%U' tag 'FORSTANDBY';
Copiali in standby, quindi cataloga e ripristina
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,….; }
Ora possiamo cambiare il database per copiare
RMAN> SWITCH DATABASE TO COPY;
Se la query precedente restituisce 0 zero righe
RMAN> SWITCH DATABASE TO COPY;
Passaggio 11
In STANDBY database, cancella tutti i gruppi di log di ripristino in standby:
SQL> seleziona GROUP# da v$logfile dove TYPE='STANDBY' raggruppa per GROUP#;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;
SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;
SQL> ALTER DATABASE CANCELLA LOGFILE GROUP 3;
….
Passaggio 12
Ora puoi avviare l'MRP
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
Spero che ti piacciano questi passaggi dettagliati su come recuperare un database in standby da un registro di archivio mancante. Si prega di fornire il feedback. Potrebbe esserci un errore.
Legge anche
Da ASM a ASM
come trovare il numero di sequenza del registro di archivio in Oracle
come controllare gli errori del registro di avviso in Oracle
Comandi di backup RMAN
Comandi di backup dell'elenco RMAN
Passaggi da eseguire per il rollforward di un database in standby fisico utilizzando il backup incrementale RMAN. (ID documento 836986.1)