A continuación te muestro cómo simular la pérdida de un datafile en un entorno de base de datos que está en modo archive log.

Supongamos que tenemos una base de datos Oracle 19c con los datafiles almacenados en ASM y que está configurada en modo archive log.

  1. Inicia la sesión de RMAN:
$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Wed Dec 27 12:34:56 2024
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
RMAN>
  1. Simula la pérdida de un datafile:
SQL> ALTER SYSTEM CHECKPOINT;  
SQL> !rm +DATA/orcl/datafile/users01.dbf

Ahora, uno de los datafiles ha sido eliminado.

  1. Intenta abrir la base de datos:
SQL> STARTUP  
ORACLE instance started.  
ORA-01116: error in opening database file '+DATA/orcl/datafile/users01.dbf'  
ORA-01110: data file '+DATA/orcl/datafile/users01.dbf': 'USERS' tablespace

Como era de esperarse, la base de datos no puede abrirse debido a la falta del datafile.

  1. Utiliza RMAN para restaurar y recuperar el datafile:
RMAN> RESTORE DATAFILE '+DATA/orcl/datafile/users01.dbf';  
Starting restore at 27-DIC-24  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: SID=12 device type=DISK  
channel ORA_DISK_1: restoring datafile  
input datafile file number=4 name=+DATA/orcl/datafile/users01.dbf  
output file name=+DATA/orcl/datafile/users01.dbf RECID=1 STAMP=1234567890  
channel ORA_DISK_1: restore complete  
Finished restore at 27-DIC-24  
RMAN> RECOVER DATAFILE '+DATA/orcl/datafile/users01.dbf';  
Starting recover at 27-DIC-24  
allocated channel: ORA_DISK_1  
channel ORA_DISK_1: SID=12 device type=DISK  
archived log for thread 1 with sequence 1234 is already on disk as file /rman_backups/archivelog_20241227_123456.arc  
archived log file name=/rman_backups/archivelog_20241227_123456.arc thread=1 sequence=1234  
media recovery complete, elapsed time: 00:10:00  
Finished recover at 27-DIC-24

5. Abre la base de datos:

SQL> ALTER DATABASE OPEN;
Database altered.

Ahora la base de datos está abierta y operativa.

  1. Verifica que el datafile haya sido restaurado y recuperado correctamente:
SQL> SELECT NAME, ONLINE_STATUS FROM V$DATAFILE;  
NAME                                                 ONLINE_STATUS  
---------------------------------------------------- ---------------  
+DATA/orcl/datafile/system01.dbf                     ONLINE  
+DATA/orcl/datafile/sysaux01.dbf                     ONLINE  
+DATA/orcl/datafile/users01.dbf                      ONLINE  
[...]

En este ejemplo, hemos:

  1. Iniciado la sesión de RMAN.
  2. Simulado la pérdida de un datafile.
  3. Intentado abrir la base de datos, lo cual falló debido a la falta del datafile.
  4. Utilizado RMAN para restaurar y recuperar el datafile.
  5. Abierto la base de datos.
  6. Verificado que el datafile haya sido restaurado y recuperado correctamente.

En este caso, al estar la base de datos en modo archive log, RMAN puede utilizar tanto los backups completos como los archivos de redo log para recuperar el datafile a su estado más reciente. Esto proporciona una mayor flexibilidad y protección en caso de pérdida o corrupción de los datos.

Si tienes alguna otra pregunta, no dudes en consultarme.

Deja un comentario

Tendencias