DB - Flashback Database

EnglishVersion

Neste post partilho como como usar tecnologia flashback - neste caso flashback database Como exemplo vou mostar como ajuda num dos piores cenarios - num truncate


O Truncate e muito usado para limpar as tabelas, nao so os dados mas os segmentos.
para recuperar de um trunncate e necessario restaurar a base de dados.

Importante flashback database e necessario para operacoes de failover do data guard.


Activar flashback database


Requisitos para flashback database
- A base de dados em archivelog mode - tradicional archive redo logs
- Feature flashback activada - stream the logs / flashback logs

Para isso e necessario reiniciar a base de dados de uma forma consistente
Vou criar tambem um RESTORE POINT com opcao GUARANTEE FLASHBACK DATABASE


-- As '/ as sysdba',

SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount;
ORACLE instance started.
Total System Global Area 849530880 bytes
Fixed Size 1339824 bytes
Variable Size 499125840 bytes
Database Buffers 343932928 bytes
Redo Buffers 5132288 bytes
Database mounted.

SQL> alter database archivelog;
Database altered.

SQL> alter database open ;
Database altered.

SQL> alter database flashback on;
Database altered.

SQL> CREATE RESTORE POINT before_truncate GUARANTEE FLASHBACK DATABASE;
Restore point created.


Truncar a Tabela


Vou utilizar o user hr e truncar a tabela regions_4_query previamente criada no post DB - Flashback Query



-- As 'developer',

SQL> conn hr/hr
Connected.

SQL> select * from hr.regions_4_query;

REGION_ID REGION_NAME
---------- -------------------------
2 Americas
3 Asia
4 Middle East and Africa
1 Europe

SQL> truncate table regions_4_query;
Table truncated.

SQL> select * from regions_4_query;
no rows selected


Restaurar a Tabela


Agora e a parte em que o developer se arrependeu eu precisa dos dados na tabela


SQL> shut immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount;
ORACLE instance started.

Database mounted.

SQL> flashback database to restore point BEFORE_TRUNCATE;
Flashback complete.

SQL> alter database open resetlogs;
Database altered.

SQL> select * from hr.regions_4_query;

REGION_ID REGION_NAME
---------- -------------------------
2 Americas
3 Asia
4 Middle East and Africa
1 Europe


Obrigado pela leitura, espero que este post o tenha ajudado.
Rogerio

Comments