Arquivo da categoria: drop table

Oracle RecycleBin

Fala PessoAll,

Bom, esses dias me deparei com um pequeno problema e graças a um “novo” recurso do Banco de Dados Oracle, a partir de sua versão 10g, eu consegui me safar.

Bom, estavamos nós (eu e mais um desenvolvedor) alterando um processo e vimos que no nosso processo uma determinada tabela não era mais necessária, aí conclusão: remove esse lixo! aí vamos nós com aquele velho e bonito comando:

drop table nossa_tabela;

Pronto, tabela dropada.

Para quem não sabe, este comando no Oracle elimina(va) completamente a tabela do banco de dados e você não conseguiria mais (por vias normais e com permissão de um simples mortal desenvolvedor) trazer ela de volta. O que fazer neste caso? Ir falar com aquele simpático e prestativo amigo DBA para voltar um backup e importar apenas esta tabela que se você tiver sorte e ela não for muito utilizada estará com dados da madrugada (teoricamente a hora em que os backups são feitos).

Bom, depois do drop concluído, tentamos compilar o procedimento que estavamos atualizando e… advinha? Lei de Murphi, a tabela era usada em um gigalhão de lugares da rotina e nós não tinhamos visto! mas… graças a era Pós-Oracle 10g e suas new features, “nossos problemas se acabaram-se”.

Existe no 10g um recurso chamado RecycleBin, que no momento em que uma tabela é dropada o banco a mantém por lá, ou seja, quando você dropa, ele grava um registro numa tabela chamada recyclebin (pode ser acessada através do comando select * from recyclebin) informando que a tabela foi “dropada”, qual o novo nome dela e qual era seu nome antigo, como mostrado no registro a seguir:

OBJECT_NAME ORIGINAL_NAME
-------------- ---------------
BIN$ssRbdlWRsCZm8/FvurZ2w==$0 PERMISSAO_USUARIOS

PS: esta tabela possui mais algumas informações como hora do drop, se pode recuperar a tabela, estou mostrando apenas o nome atual e nome original.

Depois de saber disso, podemos facilmente ressucitar esta tabela para que ela volte a ser como era antes, para tal, basta apenas executarmos o comando:

flashback table PERMISSAO_USUARIOS before drop;

E em seguida, teremos a tabela de volta, do lugar de onde nunca deveria ter saído! Rsrsrs.

Espero que esta dica ajude alguns desenvolvedores que por falta de experiência, por falta de atenção ou por confiar na análise de outro desenvolvedor (meu caso) façam uma dessas.

Boa sorte a todos e lembrem: “Deus protege as criancinhas e os desenvolvedores!”.

Grande abraço a todos e um bom final de semana!

Como diz Mauro Halfeld: “E não deixe de aproveitar o final de semana com sua família”.

Atc.
Gerson Júnior