sql >> Base de Datos >  >> RDS >> Oracle

cómo recuperar la base de datos en espera de un registro de archivo faltante

Una base de datos física en espera se basa en la aplicación continua de registros de archivo de una base de datos principal para estar sincronizada con ella. En las versiones de Oracle Database anteriores a la 10g, en el caso de que un registro de archivo se perdiera o se dañara, tenía que reconstruir la base de datos en espera desde cero. A partir de 10g, puede usar una copia de seguridad incremental de SCN y recuperar el respaldo usando el mismo para compensar los registros de archivo que faltan. En esto, veremos cómo recuperar la base de datos en espera de un registro de archivo que falta

Estos son los pasos para recuperar la base de datos en espera de un registro de archivo faltante

Paso 1:

En la base de datos en espera, compruebe el SCN actual

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

Paso 2 :

En la base de datos principal, cree la copia de seguridad incremental necesaria del SCN anterior

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

Podemos usar trabajadores paralelos para acelerar la creación de copias de seguridad si la base de datos ha generado muchos cambios

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

Paso 3:

Cancele la recuperación administrada en la base de datos en espera

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

Paso 4:

  • desplace los archivos de copia de seguridad al servidor de reserva a la carpeta /tmp.
  • Catalogar los archivos de copia de seguridad incremental en la base de datos en espera
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

Paso 5:

Aplicar la copia de seguridad incremental a la base de datos en espera

rman target /
RMAN>RECOVER DATABASE NOREDO;

Paso 6:

Vuelva a colocar la base de datos en espera en el modo de recuperación administrada.

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

Desde alert.log notará que la base de datos en espera todavía está buscando los archivos de registro antiguos

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

Esto se debe a que el archivo de control no se ha actualizado. Por lo tanto, el archivo de control en espera debe volver a crearse

Paso 7:

En el principal, cree un nuevo archivo de control en espera

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

Paso 8:

Capture la información del archivo de datos en la base de datos EN ESPERA.
El archivo de control en espera deberá actualizarse a partir de la copia de seguridad realizada en el paso 7. Dado que los nombres de los archivos de datos probablemente sean diferentes a los principales, guarde los nombres de sus archivos de datos en espera como referencia después de restaurar el archivo de control desde la copia de seguridad principal. Ejecute la siguiente consulta en la base de datos en espera y guarde los resultados para su uso posterior.

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

Paso 9:

Copie el archivo de control en espera en el sitio en espera. Apague la base de datos en espera y reemplace los archivos de control en espera y reinicie la base de datos en espera en el modo de recuperación administrada usando el siguiente comando

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

Paso 10:

Montar el modo de espera

RMAN> ALTER DATABASE MOUNT;

Paso 11:

Este paso es necesario si la ubicación de los archivos de datos es diferente en espera y principal

Si el primario y el secundario tienen una estructura y nombres de archivo de datos idénticos, este paso se puede omitir.

Oracle recomienda comprobar si la encarnación es primaria y de reserva antes de completar este paso.

example:  
RMAN> list incarnation; 

Dado que hemos restaurado el archivo de control de PRIMARIO, los nombres de ubicación del archivo de datos en este archivo de control de ESPERA restaurado serán los mismos que los de la base de datos PRIMARIA. Si la estructura de directorios es diferente entre las bases de datos principal y en espera o si está utilizando nombres de archivo administrados por Oracle OMF, entonces no podrá identificar los archivos en espera. Entonces podemos catalogar los archivos de datos STANDBY con RMAN para ejecutar la operación de cambio de nombre.

Realice el siguiente paso en ESPERA para cada grupo de discos (o directorio) donde residen los archivos de datos en espera.

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

Si se agregaron archivos de datos al principal DESPUÉS del SCN de respaldo (en nuestro ejemplo, scn 6746747647647), esos archivos de datos no se crearán automáticamente en el servidor en espera, independientemente de la configuración del parámetro standby_file_management. Los archivos de datos agregados deberán restaurarse en el servidor de reserva. Para determinar si se ha agregado algún archivo a Principal desde el SCN actual en espera

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

Si devuelve alguna fila, entonces tenemos que restaurar esos archivos de primario a standby

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

Cópielos en modo de espera y luego catalogarlos y restaurarlos

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

Ahora podemos cambiar la base de datos para copiar

RMAN> SWITCH DATABASE TO COPY;

Si la consulta anterior devuelve 0 cero filas

RMAN> SWITCH DATABASE TO COPY;

Paso 11

En ESPERA  base de datos, borre todos los grupos de registros de rehacer en espera:

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

Paso 12

Ahora puede iniciar el MRP

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Espero que le gusten estos pasos detallados sobre cómo recuperar una base de datos en espera de un registro de archivo faltante. Por favor proporcione los comentarios. Puede haber un error.

También lee
De no ASM a ASM
cómo encontrar el número de secuencia de registro de archivo en Oracle
cómo comprobar los errores de registro de alerta en Oracle
Comandos de copia de seguridad de RMAN
Comandos de copia de seguridad de lista de RMAN
Pasos a realizar para la puesta al día de una base de datos física en espera mediante la copia de seguridad incremental de RMAN. (ID de documento 836986.1)