Início > Oracle > Oracle Recycle bin

Oracle Recycle bin

Bom hoje eu vou falar sobre a lixeira do Oracle que foi implementado na versão 10g em diante, assim como habilitar desabilitar e administra-la, segue

   Habilitar a lixeira por sessão e nos parametros do banco:
Sessão: ALTER SESSION SET recyclebin = ON;
Sistema: ALTER SYSTEM SET recyclebin = ON;

   Desabilitar a lixeira por sessão e nos parametros do banco
Sessão: ALTER SESSION SET recyclebin = OFF;
Sistema: ALTER SYSTEM SET recyclebin = OFF;

É isso mesmo que você pensou funciona igual a lixeira do SO, quando deletarmos tabelas elas vão para lixeira, claro que como nos SO ela tem um limite, se você deletar uma tabela imensa ela pode ser excluída  definitivamente. Bom vamos lá:

Para saber quais os objetos do usuário estão na lixeira basta realizar a seguinte query:

SELECT * FROM RECYCLEBIN;
 
Ou:  SQL> show recyclebin
 
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
————— —————————— ———— ————–
EMPLOYEES BIN$yrMKlZaVMhfgNAgAIMenRA==$0 TABLE 2003-10-27:14:00:19
IDX_EMP BIN$yrQIJMkVDlopOAlAIMenRA==$1 INDEX 2003-10-27:14:00:19

   Limpeza da Lixeira, segue:

PURGE TABLE “BIN$yrMKlZaVMhfgNAgAIMenRA==$0”;
PURGE TABLE employees;
PURGE INDEX “BIN$yrQIJMkVDlopOAlAIMenRA==$1”;
PURGE INDEX idx_emp;

No comando de PURGE, também pode ser especificada a tablespace de modo a excluir fisicamente todos os objetos da lixeira que se encontram na mesma ou somente os objetos de um usuário:

PURGE TABLESPACE users;
PURGE TABLESPACE users USER hr;
 
Um usuário também pode limpar toda a sua lixeira através do comando:

PURGE RECYCLEBIN;

o comando abaixo faiz limpeza da lixeira de todos os esquemas do banco de dados, dê preferência após um backup completo:
 
PURGE DBA_RECYCLEBIN;

   Recuperar objetos da lixeira

O comando para recuperar uma tabela da lixeira é o FLASHBACK TABLE … TO BEFORE DROP, onde é possível especificar o nome original ou o novo nome atribuído a tabela. Quando uma tabela é recuperada, os objetos associados também são recuperados, como índices, triggers e constraints.

FLASHBACK TABLE employees TO BEFORE DROP;

Infelizmente os objetos associados recuperados, como índices, triggers e constraints, não retornam aos seus nomes originais por isso é necessário recuperar os nomes dos objetos da visão recyclebin antes do comando FLASHBACK TABLE e depois executar o comando ALTER RENAME TO para renomeá-los.

A cláusula RENAME TO permite que a tabela receba um novo nome na recuperação. Trata-se de uma cláusula opcional porém necessária caso exista uma tabela com o mesmo nome da original no esquema do usuário. A seguir um exemplo:
 
FLASHBACK TABLE employees TO BEFORE DROP RENAME TO old_emp;

   Detalhes:

Quando um dbspace precisar de espaço automaticamente os objetos da lixeira serão excluídos para liberar espaço.
Constraints deletadas por alter table não são salvas na lixeira. Quando deletarmos uma tabela com constraints elas ficaram salvas, mas quando restaurarmos os nomes antes definidos não serão recuperados.

Abraços

Categorias:Oracle
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: