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.