No artigo de hoje vou demonstrar de um modo simples que é possível renomear datafiles sem ter que reiniciar o Banco de Dados, se o Bancos de Dados estiver em modo ARCHIVELOG. Para saber mais sobre archive logs, leia o artigo Configurando Bancos de Dados para gerar Archive Logs.
A idéia de escrever este artigo veio após a pergunta de um ex-aluno, há aproximadamente 1 mês atrás, sobre como renomear datafiles no Banco de Dados, caso eles tivessem sido criados, por exemplo, em uma pasta errada, ou se você fez uma migração/clonagem e deseja mudar o padrão de estrutura de pastas.
Na aula em que o aluno fez essa pergunta a gente fez um exemplo em sala de aula e eu montei o rascunho de um script. Recentemente criei um Data warehouse e passei pela mesma situação que o aluno (criei os datafiles em pastas erradas), então peguei o script que eu havia gerado em aula, fiz algumas alterações e irei compartilhar o roteiro e os comandos através do passo-a-passo abaixo:
------------------------------------------------------------------------------------------------------
É necessário conectar-se no BD com uma conta de usuário que tenha privilégios administrativos
(Ex. role DBA) para executar o passo-a-passo abaixo
------------------------------------------------------------------------------------------------------
Passo 1: Alterando o tablespace para OFFLINE
Para alterar o(s) datafile(s) de um tablespace sem tirar o BD do ar, o primeiro passo necessário é mudar o tablespace para OFFLINE. Considerando um tablespace com nome teste, segue abaixo um código de exemplo:
SQL> ALTER TABLESPACE TESTE OFFLINE IMMEDIATE;Passo 2: Alterando o nome dos datafiles no sistema de arquivos
Mova os arquivos no sistema de arquivos para o local correto. Segue abaixo um exemplo de comando para mover os arquivos em uma janela de terminal do SO Linux:
mv /pasta1/teste.dbf /pasta2/teste.dbf
Passo 3: Alterando o nome dos datafiles no tablespace
Renomeie os datafiles do tablespace users indicando o novo caminho deles:
SQL> ALTER TABLESPACE TESTE RENAME DATAFILE '/pasta1/users.dbf' to '/pasta2/users.dbf';
Passo 4: Recuperando o tablespace
Recupere (atualização de redo logs e SCN) o tablespace utilizando o RMAN (ver Imagem 01):
RMAN> RECOVER TABLESPACE TESTE;
Imagem 01 - Recuperando um tablespace antes de alterar seu estado para ONLINE |
Passo 5: Alterando o tablespace para ONLINE
Mude o tablespace novamente para o estado original (ONLINE):
SQL> ALTER TABLESPACE TESTE ONLINE;
Pronto! Se todos os passos foram executados com os valores corretos, você terminou de renomear os datafiles sem ter que parar o BD! Em BDs de produção isso é extremamente útil, pois dificilmente podemos tirá-los do ar!
Por hoje é só!
[]s
Excelente artigo!
ResponderExcluirParabéns Fabio.
Obrigado Camilla!
ExcluirMuito bom o artigo e me ajudou nesta madrugada
ResponderExcluirMichel, obrigado pelo comentário. Que bom que o artigo foi útil!
Excluir