terça-feira, 5 de abril de 2011

FlashBack Table e Flashback Drop

Olá Caros Amigos...

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

Mãos  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  tablespace de Undo.
O tablespace de Undo contém os dados que serão usados para recuperacão da tabela .
Parametro UNDO_RETENTION  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  para garantir  que os dados de undo não sejam reutilizados e respeite o parametro UNDO_RETENTION .

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

SQL> 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  tabela ...

1-Habilite o movimento da linha

SQL> ALTER TABLE teste ENABLE ROW MOVEMENT;

2-Restaure a tabela para um determinado SCN.

SQL> FLASHBACK TABLE teste TO SCN 1743434;

OU

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

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>Drop table teste ;

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

SQL> select object_name, original_name, 
  2    type, createtime, droptime
  3  from   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  user_recyclebin.

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

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

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

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

SQL> 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  e Até maisssssssssssss.......

Nenhum comentário:

Postar um comentário