Se aplica a:
Base de datos de Oracle: 11gR2
Problema:
A menudo, mientras se llevan a cabo pruebas, es necesario cargar una base de datos limpia antes de iniciar una nueva ejecución. Una manera para garantizar una base de datos limpia es volver a crear la base de datos completa antes de cada prueba. No obstante, según del tamaño de la base de datos, este enfoque puede demorar mucho tiempo o ser ineficiente.
Solución:
En este artículo, se describe cómo utilizar la función flashback de Oracle para restaurar de forma rápida una base de datos a un estado previo a la ejecución de la carga de trabajo. Más concretamente, en este artículo se describen los pasos para usar los “puntos de restauración garantizados”.
Punto de restauración:
El punto de restauración no es más que un nombre asociado con una fecha y hora o un SCN de la base de datos. Se puede crear un punto de restauración normal o un punto de restauración garantizado. La diferencia entre los dos es que el punto de restauración garantizado permite realizar el flashback al punto de restauración independiente del parámetro de inicialización DB_FLASHBACK_RETENTION_TARGET, es decir, siempre está disponible (suponiendo que tiene suficiente espacio en el área de recuperación flash).
NOTA: En este artículo, el registro de flashback no estaba activado.
Punto de restauración garantizado:
Requisitos previos: para crear un punto de restauración garantizado se requieren los siguientes prerrequisitos:
- El usuario debe tener los privilegios del sistema SYSDBA
- Debe haber creado un área de recuperación flash
- La base de datos debe estar en modo ARCHIVELOG
Crear un punto de restauración garantizado:
Una vez que haya creado o migrado una nueva base de datos, lo primero que debe hacer es crear un punto de restauración garantizado para poder hacer un flashback a él todas las veces antes de iniciar una nueva carga de trabajo. Estos son los pasos que debe seguir:
- $> su – oracle
- $> sqlplus / as sysdba;
- Averigüe si ARCHIVELOG está habilitado
SQL> select log_mode from v$database;
Si el paso 3 muestra que ARCHIVELOG no está habilitado, continúe; de lo contrario, vaya al paso 8 que aparece a continuación.
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> alter database archivelog;
- SQL> alter database open;
- SQL> create restore point CLEAN_DB guarantee flashback database;
aquí, CLEAN_DB es el nombre dado al punto de restauración garantizado.
Visualización del punto de restauración garantizado
SQL> select * from v$restore_point;
Verifique la información sobre el punto de restauración recién creado. Además, anote el SCN# como referencia y nos referiremos a él como “SCN# de referencia”
Flashback al punto de restauración garantizado
Ahora, para poder restaurar la base de datos al punto de restauración garantizado, siga los pasos a continuación:
- $> su – oracle
- $> sqlplus / as sysdba;
- SQL> select current_scn from v$database;
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> select * from v$restore_point;
- SQL> flashback database to restore point CLEAN_DB;
- SQL> alter database open resetlogs;
- SQL> select current_scn from v$database;
Compare el SCN# del paso 9 anterior con el SCN# de referencia.
NOTA: Es posible que el SCN# del paso 9 anterior no sea necesariamente el mismo SCN# que el SCN# de referencia, pero será muy parecido.
Referencias: