FLASHBACK ORACLE: "Uma jornada pelo tempo "
Published: 2023-11-01 18:12:27

Se você é desenvolvedor ou administrador de banco de dados, com certeza você já utilizou ou ouvir falar dos comandos Update e Delete. Se você conhece esses comandos, sabe que eles são detentores de um grande poder quando combinados perfeitamente com a clausula de restrição Where. 

Caso não haja harmonia nessa relação pode-se gerar uma grande catástrofe, principalmente pela ausência da clausula where.

A maioria dos casos onde o **Commit** não foi realizado basta fazer um **Rollback** e as coisas se acertam e talvez ninguém saiba o que aconteceu. 

Nos casos onde o Commit foi efetuado, é possível que você precise constatar o DBA, orando para que ele tenha um backup atualizado do referido banco de dados. Antes de tomar essa atitude, temos uma alternativa para resolução desse problema, o recurso **Flashback da Oracle**.

 
 Já te adianto que nem tudo são flores, essa feature é utilizada apenas para recuperação logica transformando horas de serviço em minutos, facilitando assim a resolução do problema. _**Ressalto que esse recurso não substitui as boas estratégias de backup tradicional**_, nas quais permitem as recuperações lógicas e físicas. 
 
 Afinal, você sabe a diferença de perda lógica e perda física? De forma objetiva:
 
 - **Perda Física:** Podemos exemplificar com um corrompimento dos arquivos de dados de um banco de dados, resultado de um problema físico no disco
 
 - **Perda Lógica:** Podemos definir a perda lógica quando não há corrompimento do arquivo de dados, e sim por falha humana como uma instrução SQL incorreta ou executada de forma acidental.
 
 
 
 
Pensando em um cenário onde temos uma tabela chamada funcionário:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/irsbcfg92griihoqwtb5.png)




Digamos que um comando delete foi efetuado indesejadamente e nossa tabela de funcionários foi limpa:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9c8ndfd0ni58g75hjgbq.png)




Então vamos lá, para vermos os dados da tabela antes do indesejavél delete, podemos usar o comando: 

```
SQL> SELECT FROM  FUNCIONARIOS AS OF TIMESTAMP(sysdate - INTERVAL ‘10’ MINUTE);

```

Com o comando anterior conseguimos vizualizar os dados que estavam na tabela 10 minutos atrás, mas elas ainda não estão na tabela, para inlcuir, basta um insert simples utilizando o comando timestamp:

```
SQL> INSERT INTO FUNCIONARIOS SELECT FROM  FUNCIONARIOS AS OF TIMESTAMP(sysdate - INTERVAL ‘10’ MINUTE);
```


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/43kz9xn6cl1p094q972c.png)


Conforme o comando a cima, observamos que os dados da tabela funcionários estão disponíveis novamente. Quando utilizamos o comando anterior, solicitamos ao SGBD Oracle quais eram as informações pertinentes na tabela a um determinado tempo atrás, no nosso exemplo usamos 10 minutos mas esse tempo poderia também ser expresso em segundos, minutos, horas... Pode ser que consiga recuperar informações de até dois dias atrás, tendo em vista a linha do tempo, quanto mais rápido agir, mais chances você tem de recuperar os dados.






**Desvantagens do Flasback Oracle:** A funcionalidade do Oracle database realmente é poderosa e muito útil em vários cenários, porém tem seus pontos negativos nos quais devem ser levados em consideração. Pode ser que adicione overhead de desempenho ao sistema, no sentido de gerar uma porcentagem acrescida no orçamento. O flashback requer espaço adicional para armazenamento das informações histórica dos dados, assim aumentando o tamanho do banco de dados.



As aplicações no mercado pode ser observada em várias situações, além da recuperação de dados perdidos acidentalmente:

**- Auditoria de dados:** As organizações podem usar FlashBack para auditar e rastrear as ultimas alterações realizadas no banco de dados.

**- Desenvolvimento de testes:** Em um ambiente de desenvolvimento e teste, o flashback pode ser útil para os desenvolvedores voltarem no tempo e criar cenários de teste com dados históricos.

**- Solução de problemas: **Em um momento de resolução de problemas, pode ser usado para verificar como os dados estavam antes do acontecimento de um determinado problema.



Em suma, o uso do FlashBack Oracle demonstra ser benéfica em varias frentes, proporciona maior eficiência, simplificando tarefas complexas e melhorando a produtividade em contexto geral. No entanto é importante ressaltar que a eficácia da ferramenta depende muito da maneira em que é implementada e de sua adaptação às necessidades específicas de cada cenário, tornando fundamental a avaliação minuciosa dos objetivos e requisitos, a fim de aproveitar ao máximo seus benefícios.