Recuperando registros
Você deletou uma informação de uma tabela, apagou tudo,
Esta como esse cara ai do lado ?
Pois é, deve ser realmente ruim apagar por engano uma grande quantidade de dados (ops.... cuide sempre de colocar a clausula where em seus deletes !!!).
Há um recurso no Oracle para que se possa recuperar dados que foram apagados.
A feature para resolver o problema de perda de dados esta disponível nos bancos 9i ou superior - o Oracle Flashback.
A partir da versão 9i do banco, a Oracle introduz o conceito de undo e com ela uma funcionalidade que permite ao usuário errar e ao DBA recuperar um registro muito mais facilmente do que nas versões anteriores.
Digamos que você tenha uns 2999 registros em uma tabela e acaba apagando por engado, e agora ?
Use então o comando abaixo:
SQL> select * from artigo3 as of timestamp systimestamp - interval '5' minute;
Isso fará com que seja exibido os dados da maneira como se encontravam a 5 minutos atrás, se quizer pode aumentar o periodo para recuperar dados mais antigos, como 30 minutos atrás.
Se você quiser salvar estes dados para que não se percam do UNDO, faca um simples insert como se segue:
SQL> insert into artigo3
select * from artigo3 as of timestamp systimestamp - interval '35' minute;
commit;
Referências:
Para maiores informações sobre esta feature, acesse o artigo no site do GPO e o artigo do site iMasters.
22 comentários:
Vc (este comando) salvou vida! Simples assim...
2 vidas salvas, rss
3 e aumentando .... muito bom pensei que teria q voltar o bkp por míseras 2 linhas ...
Bruno
Em uma sexta feira 13 perdendo os dados e encontrar esse script nem acredito. 4 Vidas Salvas, já tava arrumando as coisas para ir na folha eheheh.
5 vidas salvas.
5 vidas salvas e um projeto salvo... você é o CARA!!!
Show de bola. Isso salva vidas!
Muito bom.
Obrigada amigo.
Muito obrigado amigo pela dica, ajudou muito
Bom dia
Também moro em Curitiba , escolha o lugar e o tanto de chopp que você consiga tomar e vamos lá.. salvou mais uma vida.
Abraço
Alessandro
Numa sexta-feira, perder dados de linha de produção em ambiente de produção não é mole não.
Salvou mais uma vida, quando vir a Manaus me procure que também lhe pago um chopp.
obrigado
Mais 1
Salvou a vida da minha coordenadora! AUIEHAUIEHAUIE
O meu não deu certo! alguém poderia me ajudar... desespero on....
Se não funcionou não deve estar habilitado esse recurso, o DBA deve ter deixado desabilitado. Nesse caso só falando com ele pra restaurar um backup incremental da tabela.
Consegui recuperar uma falta de atenção do usuário. Hehehehe... Comando salva vidas. Viva Oracle
Valeu, ajudou demais em uma desatenção do usuário !! Em BH te pagamos uma cerveja ! kk
Olá! alguém sabe dizer como seria esse SELECT para pegar uma determinada data? gostaria de recuperar os registros de um determinado mês de 2 anos atrás.
Obrigado!
Bom dia,
Blog da turma,
É impossível, existe um limite de tempo para guarda das informações. Será necessário voltar um backup se assim existir.
qlquer coisa da um toque, 19 993009495
+1 Salvo!
Existe um tempo para manter os dados, que o DBA configura. Pode ser de 15 minutos, 50 minutos ou um pouco mais, talvez umas poucas horas (mas dificilmente vai ser tão grande - não espere muito mais do que 2 horas ou vários dias por exemplo).
O motivo é que quanto maior for o tempo que mantem registros antigos, maior é o volume em disco necessário, o que eleva custos.
me ajudou muito parceiro! =)
Postar um comentário