[Oracle] Disco encheu? Precisa mover os Datafiles? Se liga nessa dica

[Oracle] Disco encheu? Precisa mover os Datafiles? Se liga nessa dica

Recentemente precisei mover alguns datafiles de lugar porque o espaço do diretório /u01 já estava completamente cheio, e por esse motivo, o banco estava DOWN, ou seja, inoperante. Aqui, quero compartilhar com vocês uma dica rápida para quem, às vezes, não sabe ou até mesmo tem dúvidas de como realizar essa operação de modo rápido e preciso.

Cenário

Para que você entenda o cenário, meu ORACLE_HOME e ORACLE_BASE estão no diretório /u01, e o diretório ORADATA também está todo lá. Ou seja, eu tinha um espaço limitado, porém o banco foi crescendo, crescendo, e em determinado momento ele estourou o espaço do /u01. Por esse motivo, o banco não conseguia alocar mais espaço e ficou inoperante, ou seja, down.

Como Fazer

  1. No meu caso, como o /u01 havia estourado, poderíamos expandir o disco ou criar um novo. A equipe de infraestrutura criou um novo disco para movermos alguns datafiles a fim de liberar espaço no diretório /u01.
  2. Após criar a estrutura de diretórios dentro do novo disco (com permissões para o usuário oracle e o grupo oinstall), movemos os arquivos do /u01 para o novo diretório.
    mv caminho_do_diretorio/nome_do_arquivo.dbf novo_caminho/nome_do_arquivo.dbf

    Exemplo:

    mv /u01/oradata/users.dbf /u02/oradata/users.dbf
  3. Após finalizar a movimentação dos arquivos, devemos verificar se o espaço foi liberado no diretório que estava cheio. No meu caso, mesmo movendo os arquivos, o espaço no /u01 não era liberado. Precisamos então dar um kill no processo do banco, pois ele ainda estava rodando e alocando espaço.
    kill -9 PID

    Para identificar o processo, usamos:

    ps -ef | grep pmon
  4. Com o processo encerrado e o espaço liberado, devemos subir o banco no modo MOUNT para executarmos um comando no banco e informarmos ao Oracle que os arquivos movidos agora estão em outro lugar.
    sqlplus / as sysdba
    startup mount;
  5. No modo MOUNT, digite o seguinte comando:
    ALTER DATABASE RENAME FILE '/u01/oradata/old_file.dbf' TO '/novo_disco/oradata/new_file.dbf';
  6. Feito isso, agora devemos abrir o banco:
    ALTER DATABASE OPEN;

Galera, é isso! Lembrando que isso foi testado e funcionou comigo.

Até a próxima!

Tags: , , , , , , , , , , , , , , , , , , ,