Social Icons

18 de set. de 2012

Renomeando datafiles em Oracle Database


Olá pessoal,

     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

4 comments:

 

LINKS ÚTEIS

Total de visualizações de página

Seguidores

Meu One Drive (antigo Sky Drive)