[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
- 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
. - Após criar a estrutura de diretórios dentro do novo disco (com permissões para o usuário
oracle
e o grupooinstall
), movemos os arquivos do/u01
para o novo diretório.mv caminho_do_diretorio/nome_do_arquivo.dbf novo_caminho/nome_do_arquivo.dbfExemplo:
mv /u01/oradata/users.dbf /u02/oradata/users.dbf
- 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 umkill
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
- 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;
- No modo
MOUNT
, digite o seguinte comando:ALTER DATABASE RENAME FILE '/u01/oradata/old_file.dbf' TO '/novo_disco/oradata/new_file.dbf';
- Feito isso, agora devemos abrir o banco:
ALTER DATABASE OPEN;
Galera, é isso! Lembrando que isso foi testado e funcionou comigo.
Até a próxima!