terça-feira, 28 de fevereiro de 2012

Oracle - Métodos de Movimentação de Datafiles

Tudo bem pessoal? Após um longo feriado para descansarmos, voltamos ao assunto que nos interessa, Oracle, e hoje iremos aprender alguns métodos de movimentação de Datafiles para facilitar o trabalho do seu dia-a-dia com o banco de dados. Porém, ao lermos o título da coluna a primeira dúvida surge:


Para que server e quando iremos utilizar a movimentação de datafiles?
Todos sabemos que na arquitetura do Oracle, as tablespaces (Espaços de Tabela) são áreas lógicas para armazenamento de dados no Oracle, onde são constituídas de um ou mais datafiles (Arquivos de Dados) que armazenam esses dados em áreas físicas no servidor, em extensões .DBF, muitas vezes, uma tablespace pode ter muitos datafiles em diversos FileSystem (Discos do Servidor) ou estar guardadas em pastas diferentes, complicando assim a administração para essa tablespace.

Desde modo, a movimentação de datafiles serviria para reorganizar todos os arquivos de dados no servidor, conforme sua necessidade, e deixar a administração das tablespaces mais fácil e ágeis.

Um exemplo prático para demonstrarmos sua utilização, seria dando o seguinte problema.
Tenho uma banco de dados chamado ALPHAMEK, em um ambiente UNIX, nesse banco de dados tenho uma tablespace de dados chamada POPOCA, que possui 6 datafiles de 1GB cada, onde estão todos os meus segmentos do tipo Tabela, e no servidor, eu tenho 5 FileSystem de 50GB montados, todos os datafiles dessa minha tablespace POPOCA estão "jogados" nos filesystems.
O gerente está pedindo para organizar a base de dados, deixando 3 filesystem para dados e 2 filesystem para índices. Observando que a base da dados está on-line e fazendo transações. Como podemos organizar esses datafiles da tablespace POPOCA?
Primeiramente, ao entrar no SQL*PLUS iremos verificar todos os Datafiles dessa tablespace e traçar um plano de organização dela.

O resultado gerado é:


Percebe-se que meus datafiles estão distribuidos em todos os filesystems do servidor, tudo bagunçado, complicando a administração dessa tablespace, e para melhorar isso, nosso plano de organização seria passar todos os datafiles, pelo segundo em diante para o
fileSystem u01. Lembrando que o filesystem u01 deve ter no mínimo 5GB de espaço em disco, para que posso copiar sem erros.
Portanto, o primeiro passo dentro do banco de dados é deixar a tablespace READ ONLY e OFFLINE. Para não sofrer consultas e transações, fazendo isso não irá ocasionar erros na movimentação e irá garantir a quantidade e consistência de dados de cada datafile. 
Lembrando que a nossa base de dados está on-line.
Para confirmar suas ações, basta verificar o status da tablespace.
Resultado.

Agora nosso próximo passo é copiar os datafiles com final 02, 03, 04, 05 e 06 para o filesystem u01, o melhor modo é ir para o sistema operacional e copiar esses arquivos na mão.


Agora todos os nossos datafiles estão dentro do filesystem u01, ainda não acabo, temos que dizer para a tablespace POPOCA onde estão os novos datafiles, para isso, após voltarmos ao SQL*PLUS e digitar o seguinte comando:


Esse comando deve ser feito para todos os datafiles que forão mudados, ele que é responsável pela mudança dos datafiles da tablespace em nível lógico, e logo em seguida devemos colocar a tablespace online.

Agora em modo de leitura e gravação.


Lembre-se que após ter feito todo esse serviço, os antigos datafiles ainda estão nos antigos filesystem ocupando espaço, eu recomendo que após copiar e alterar a tablespace, os datafiles que estão nos filesystem u02, u03, u04 e u05 sejam apagados.

PRONTO! Você acabou de mover os datafiles de uma tablespace, organizando assim seu banco de dados e os arquivos do servidor, seu gerente ficará agradecido e você irá ganhar mais alguns pontos com ele pelo seu serviço.
Abraços.

0 comentários:

Postar um comentário

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Eagle Belt Buckles