Flashback table

Recycle Bin Full 150x150 Flashback tableEsta feature de flashback table permite que uma tabela “acidentalmente” dropada possa ser recuperada.
Trata-se de um conceito análogo ao da lixeira do Windows.
Esse conceito foi introduzido no Oracle 10g e para que o procedimento funcione deve estar configurado o parametro de inicialização RECYCLEBIN.

Para habilitar e desabilitar o Recycle bin:

Como desabilitar

SQL> ALTER SESSION SET recyclebin = OFF;

SQL> ALTER SYSTEM SET recyclebin = OFF;

Como habilitar

SQL> ALTER SESSION SET recyclebin = ON;

SQL> ALTER SYSTEM SET recyclebin = ON;


Habilitando e desabilitando o recycle bin com o ALTER SYSTEM ou ALTER SESSION efetiva a alteração imediatamente. Porem ao desabilitar o recycle bin não limpa os objetos já existentes na lixeira.

Irei mostrar no exemplo a seguir todo o processo e como limpar a lixeira (recyclebin):

Vamos efetuar a análise por meio de exemplos.

1. Certifique que a sua base está configurada para o recycle bin

SQL> show parameter recyclebin

NAME            TYPE        VALUE
--------------- ----------- ---------
recyclebin      string      ON

2. Crie uma tabela chamada TABELATESTE:

SQL> select * from tab;

TNAME		TABTYPE		CLUSTERID
-------		-------		---------
TABELATESTE	TABLE

3. “Acidentalmente”, drope a tabela TABELATESTE:

SQL> drop table TABELATESTE;
Table dropped.

“Ups !!! dropei a tabela errada …”

4. Verifique o que ocorreu com a tabela recém eliminada:

SQL> select * from tab;

TNAME				TABTYPE		CLUSTERID
--------------------		------------	-----------
BIN$04LhcpndanfgMAAAAAANPw==$0	Table

5. Verifique a lixeira:

SQL> show recyclebin

ORIGINAL NAME	RECYCLEBIN NAME			OBJECT TYPE	DROP TIME
-------------	------------------------------	-------------	-------------
TABELATESTE	BIN$04LhcpndanfgMAAAAAANPw==$0	TABLE		2011-10-02 21:13:31

6. Ressuscite a tabela recém-eliminada:

SQL> FLASHBACK TABLE TABELATESTE TO BEFORE DROP;
FLASHBACK COMPLETE.

7. Verifique se a tabela está devolta:

SQL> SELECT * FROM TAB;

TNAME		TABTYPE		CLUSTERID
-------		-------		---------
TABELATESTE	TABLE

8. Para limpar a lixeira, ou remover tabelas da lixeira, ou remover todas as tabelas eliminadas de um tablespace, respectivamente:

PURGE RECYCLEBIN;
PURGE TABLE TEST;
PURGE TABLE "BIN$04LhcpndanfgMAAAAAANPw==$0";
PURGE TABLESPACE USSERS;

9. Para eliminar a tabela em definitivo, de uma só vez:

DROP TABLE TABELATESTE PURGE;

10. Agora tais se perguntando se queres restaurar a tabela com outro nome ou mesmo já tens outra tabela criada como TABELATESTE.

SQL> FLASHBACK TABLE TABELATESTE TO BEFORE DROP RENAME TO TABELA_20111002;

Flashback complete.

SQL> select * from tab;

TNAME		    TABTYPE		CLUSTERID
--------------- -------		---------
TABELATESTE	    TABLE
TABELA_20111002	TABLE

Obs.: Quando uma tabela é dropada sem efetuar o purge, qualquer segmento adicional da tabela (tal como indices ou LOBs) são também renomeada e armazenadas na lixeira (recyclebin).
No entento, quando a tabela é recuperada da lixeira, os segmentos adicionais não são renomeados.

Fonte: (FLASHBACK TABLE) Oracle® Database SQL Reference – 10g Release 2 (10.2) Part Number B14200-02
(PURGE) Oracle® Database SQL Reference – 10g Release 2 (10.2) Part Number B14200-02

%name Flashback table

Autor: Rafael Stoever

order Soma WITHOUT SCRIPT Bacharel em Sistema de Informação pela Uniasselvi, atualmente cursando Gerenciamento de Projetos em TI pela Pós Graduação Uniasselvi. Atuo como Analista de suporte buy soma with saturday delivery a banco de dados – DBA pela Lumina Serviços em TI residente de Blumenau/ SC, OPN Certified Specialist, Certificado OCP 10g/11g/12c, OCE RAC10g e Linux 10g. Conhecimentos em Microsoft SqlSever, Mysql e programação web (php,asp).