quinta-feira, 19 de maio de 2011

Oracle 10g - recuperando uma tabela dropada

A partir da versão 10g do Oracle, é possível recuperar uma tabela que foi excluída (DROP), graças a uma tabela do sistema chamada RecycleBin e a um recurso chamado Flashback

Vamos ao Exemplo:

Crio uma tabela
create table Tabela1
(id integer, nome varchar(50));

Populo a tabela com alguns registros
insert into tabela1 (id, nome) values (1, 'Napa 1');
insert into tabela1 (id, nome) values (2, 'Napa 2');
insert into tabela1 (id, nome) values (3, 'Napa 2');
insert into tabela1 (id, nome) values (4, 'Napa 3');
COMMIT;

Consulto os dados da tabela
select * from tabela1

Agora dou um Drop na tabela
drop table tabela1

Tento dar um novo select na tabela: retornará erro
select * from tabela1

Note que ela fica armazenada na tabela recyclebin
select * from recyclebin

Para recuperar a tabela, executo o comando abaixo
flashback table tabela1 TO before DROP

Um novo select na tabela e os dados estarão lá
select * from tabela1


OBSERVAÇÕES IMPORTANTES

Os objetos dropados permanecem na tabela recyclebin até que:
- Seja restaurada através do comando UNDROP;
- Seja dropado permanentemente através do comando PURGE;
- Até que não tenha espaço suficiente para os objetos regulares na tablespace;
- As Contraints referencial não são protegidas pela recyclebin;

Observações extraídas de: ProfissionaisOracle.com.br

Nenhum comentário: