FlashBack Table e Flashback Drop
Autor: Luciana Carvalho | Publicado: 2011-04-05T13:33:00-07:00

Olá Caros Amigos...

Continuando a nossa tragetória sobre as Técnologias de Flashback no Oracle, hoje eu irei&nbsp;passar-lhes dicas sobre mais dois tipos&nbsp;de Flashback .

Mãos&nbsp; a Obra!!!!

I-FLASHBACK TABLE

FlashBack Table permiti restaurar uma tabela sem a necessidde de um backup/restore do banco de dados.
Quando realizamos um restore da tabela todos os objetos associados para esta tabela , tais como indices, triggers , e constraints são restaurados também.

QUICK TIP: Se vc quer utilizar a tecnologia de flashback table é um boa pratica ajustar os parametros que manipulam o&nbsp; tablespace de Undo.
O tablespace de Undo contém os dados que serão usados para recuperacão da tabela .
Parametro UNDO_RETENTION&nbsp; especifica em segundos o default são 900 s (15 segundos) o tempo no qual os dados serão retidos , mas se alguma transação ativa usar todo tablespace de undo, então ele sera reutilizado e vc não poderá voltar a tabela. Para contornar esta situação o ideal é criar um tablespace de undo com a opção RETENTION GUARANTEE&nbsp; para garantir&nbsp; que os dados de undo não sejam reutilizados e respeite o parametro UNDO_RETENTION .

Veja um exemplo abaixo&nbsp; para criacão de um tablespace de undo :

SQL&gt; CREATE UNDO TABLEAPCE undo_tbs
DATAFIEL ‘/u01/app/oracle/undo_tbs01.dbf’ SIZE 1 G
RETENTION GUARANTEE;

Vamos Lá:

Suponhamos que vc apagou determinada linhas de uma tabela por acidente e agora precisa recuperarar esta&nbsp; tabela ...

1-Habilite o movimento da linha 

SQL&gt; ALTER TABLE teste ENABLE ROW MOVEMENT;

2-Restaure a tabela para um determinado SCN.

SQL&gt; FLASHBACK TABLE teste TO SCN 1743434;

OU

2.1-Restaure a tabela a um tempo no qual ela se encontrava correta.
&nbsp;&nbsp;&nbsp; 
SQL&gt; FLASHBACK TABLE teste 
&nbsp;&nbsp;&nbsp;&nbsp; TO TIMESTAMP 
&nbsp;&nbsp;&nbsp;&nbsp; TO_TIMESTAMP(‘24-MAR-11 12:00:00’,’MM/DD/YY HH:MI:SS’);&nbsp; 

3-Verifique se todas as linhas se encontram lá de novo.

II-FLASHBACK DROP

OBS : Nas versões anteriores do Oracle 10g o comando Drop table removia uma tabela da base permanentemente .
Com a Versão 10G as tabelas não serão mais removidas mais sim renomeadas e movidas para um objeto chamado de Recycle bin. 

Vamos ver se isso é verdade :

Siaga os Passos abaixo:

1- Drop uma tabela .

SQL&gt;Drop table teste ;

2-Faça uma pesquisa para verificar se a tabela ainda se encontra na recycle bin :

SQL&gt; select object_name, original_name,&nbsp; 
&nbsp; 2&nbsp;&nbsp;&nbsp; type, createtime, droptime
&nbsp; 3&nbsp; from&nbsp;&nbsp; user_recyclebin;

QUICK TIP : Quando a tabela é movida para a recyclebin (licheira) oracle lhe da um nome meio estranho, para visualizar o nome da tabela utilize a coluna original_name, na view&nbsp; user_recyclebin.

3-Para restaurar novamente a tabela utilize o seguinte comando:

SQL&gt; flashback table “BIN$0+ktoVChEmXgNAAADiUEHQ==$0” to before drop; (nome que o oracle atribui a tabela) 
ou
SQL&gt; flashback table teste to before drop; 

4-Para limpar a recyclebin execute o comando abaixo:
SQL&gt; purge recyclebin;

5-Para limpar apenas um objeto da recyclebin utilize o comando abaixo:

SQL&gt; purge table "BIN$0+ktoVChEmXgNAAADiUEHQ==$0";

QUICK TIP:Caso queira dropar a tabela permanentemente do banco de dados utilize o comando abaixo:

drop table teste purge ;

Obrigada&nbsp; e Até maisssssssssssss.......