MigraTI - Soluções em banco de dados

sábado, 13 de junho de 2009

Restaurando Tablespace Temporario

Bom dia.

Os tablespaces temporarios juntamente com seus arquivos de dados não podem ser incuidos no backup, pois não há como colocar estes arquivos de dados em BEGIN BACKUP devido a estes dados não serem importantes para um banco de dados.
Então como faremos para recuperar esta tablespace ou algum tempfile desta tablespace?

A resposta é oviamente facil se analizarmos que os datafiles temp não contem dados propriamente dito.
Esta tablespace serve exclusivamente para armazenar dados temporarios cuja desaparecerão quando a sessão que o utilizou desconectar.

Como eu utilizo esta tablespace?
Bom isto esta implicito no banco. Você utilizará esta tablespace quando for fazer alguma ordenação (ORDER BY) em sua query em que seja muito grande para a memória poder ordenar, neste caso você utilizará a tablespace temporaria para efetuar a ordenação.
Ou então se você criar uma tabela "global temporary" esta tabela é utilizada para armazenar dados temporarios de uma seção, infelizmente este recurso é muito pouco utilizado aqui no Brasil, pois os programadores insistem em criar tabelas normais para fazer este serviço gerando assim redo e undo.

Bom não vamos fujir do assunto.

Depois de toda esta ladainha da importancia da temp vem a pergunta.
Como recupero a temp se nem backup eu posso fazer dela?

Na verdade você não recupera a temp, você recria ela. Abaixo vou postar os passos para efetuar este processo.

1 Adicione um tempfile ao tablespace temporario com problema.
SQL> alter tablespace temp add tempfile ' CAMINHO ' size 200m;

2 Retire o tempfile danificado do ar.
SQL> alter tablespace tempfile ' CAMINHO ' offline;

3 Exclua o arquivo danificado.
SQL> alter tablespace tempfile ' CAMINHO ' drop;


Você também poderá efetuar estes procedimentos incluindo uma nova tablespace temporaria.
Neste caso você deve lembrar de transformar a nova temporary tablespace como padrão do oracle caso a danificada seja.

1 Crie um novo tablespace
SQL> create temporary tablespace temp1 tempfile ' CAMINHO ' size 200m;

2 Altere esta tablespace para ser a default do banco.
SQL> alter database default temporary tablespace temp1;

3 Eclua a tablespace danificada.
SQL> drop tablespace temp including contents and datafile;

Resolvido.

Lembrando que um usuário comun de seu ambiente não irá perceber problemas no banco de imediato mas você deverá perceber e corrigir o mesmo afim de não causar problemas maiores.

[]'s

Nenhum comentário:

Postar um comentário