# ...Y si podemos retroceder en el tiempo?

### Level200

Imaginemos esta situación que no diré que era típica pero que podría pasar...un delete o un update sin "where" y malogramos nuestra data...en esta situación que podríamos hacer: "retroceder en el tiempo" y literalmente reconstruíamos el pasado con las herramientas que teníamos: restore y recovey incompleto.

La problemática con este enfoque era el tiempo de recuperación el cual era proporcional al tamaño de nuestra base de datos y no al tamaño del error, entonces es donde viene a ayudarnos la tecnología flashback de Oracle.

> `Oracle AI Database Flashback Technologies is a unique and rich set of data recovery solutions that let the database reverse human errors by selectively and efficiently undoing the effects of a mistake.`

Flashback soporta dabase recovery a todos los niveles: row, transacción, tabla y la base de datos completa.

Prerequisito:

Para poder usar flashback database la base de datos debe tener previamente configurado "flashback logging" y estar en modo archivelog.

1.  Validamos prerequisito
    

`SQL> SELECT name, log_mode, flashback_on FROM v$database;`

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/26b22675-4dfc-4d20-9e8d-e8de487baf31.png align="center")

2.  Vemos que no esta en archivelog, sin embargo igual intentaremos ponerlo en flashback logging: `ALTER DATABASE FLASHBACK ON;`
    
    ![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/7a89ba9a-2298-45a8-b52d-0ebd00a74149.png align="center")
    
3.  Como obtuvimos error procederemos a activar el archivelog previamente.
    
    ![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/ea2c4136-29b1-4235-9d25-44b06cbd3449.png align="center")
    

Ahora si activamos el flashback :

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/8b30b490-71d4-4ff1-b306-3def20402217.png align="center")

y validamos;

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/9175e85a-6afa-40d2-b182-d08df09fd53b.png align="center")

4.  Creamos punto de restore para las pruebas:
    

`create restore point ace1;`

`SELECT current_scn FROM v$database;`

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/387c5a0e-8202-490b-8aa1-96af5e5a677f.png align="center")

5.  Realizamos el flashback database;
    

`flashback database to restore point ace1;`

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/0ecda63f-8cf4-4687-9a16-501772ac22db.png align="center")

Vemos que para hacer el flashback dabase la base debe estar en modo mount.

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/8923b2e3-b361-42da-9150-d774d9e94686.png align="center")

6.  Finalmente abrimos la base de datos con resetlogs.
    

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/63fe28cb-1674-4e03-81c7-8d839eada409.png align="center")

Y que parametros afectan al flashback :

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/6f8dd4c1-cec8-43e4-af45-1e82d5414e55.png align="center")

El db\_flashback\_*retention*\_target define en minutos hasta donde puede llegar la maquina del tiempo hacia atrás, es un objetivo y no una garantía absoluta dado que si el FRA se queda sin espacio Oracle puede recortar esa ventana.

Acá vemos como se guardan los archivos del flashback en el FRA en el directorio flashback.

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/a2a946ca-4794-4349-b4ad-f21da392a48d.png align="center")

\*\*Desde la versión 23, tenemos parámetros para poner los archivos del flashback fuera del FRA.

![](https://cdn.hashnode.com/uploads/covers/6a1ba5f97c924da4619cfa34/2a635e3c-e026-4d1f-85e3-2c5302e67200.png align="center")

**Tip:** Configurar el retention según tu necesidad y disponibilidad de espacio.

**Recomendación**: Gestionar adecuadamente los puntos de restore y crearlo cuando se realizan cambios significativos, sin embargo también se puede realizar el flashback por fecha y SCN.

**Conclusión:** El volver hacia atras en mas rápido y controlado con flashback database.
