This post is also available in:
Você deletou um diretório de ORACLE_HOME manualmente — seja para liberar espaço ou recriar a home depois — e agora o inventory.xml ainda tem a entrada lá. O deinstall não é uma opção porque o diretório já não existe. A solução suportada pela Oracle é o runInstaller -detachHome.
💡 Se o diretório da ORACLE_HOME ainda existe no disco e você quer remover tudo (binários + inventário), esse não é o procedimento correto. Consulte: Removendo uma GRID_HOME Antiga com o Deinstall do Oracle.
Por que não editar o inventory.xml manualmente?
O inventory.xml não deve ser editado à mão. A Oracle não suporta alterações manuais nesse arquivo — qualquer inconsistência pode corromper o inventário central e causar falhas em instalações futuras.
Pré-requisitos
- Outro Oracle Home válido e funcional no servidor (o
runInstallerprecisa ser executado a partir de uma home diferente da que será removida) - Acesso ao
inventory.xmlpara identificar o nome exato da home
1. Identifique a ORACLE_HOME no inventory.xml
cat /u01/app/oraInventory/ContentsXML/inventory.xmlExemplo de saída:
<HOME_LIST>
<HOME NAME="Orasidb19c_home1_4607" LOC="/u01/app/oracle/product/19.23.0.0/dbhome_1" TYPE="O" IDX="10"/>
<HOME NAME="Orasidb19c_home1_9789" LOC="/u01/app/oracle/product/19.25.0.0/dbhome_1" TYPE="O" IDX="12"/>
<HOME NAME="Orasidb19c_home1_2380" LOC="/u01/app/oracle/product/19.26.0.0/dbhome_1" TYPE="O" IDX="14"/>
</HOME_LIST>Você precisa de dois valores da entrada que quer remover:
LOC→ caminho da ORACLE_HOMENAME→ nome da home no inventário (é case-sensitive)
2. Identifique uma ORACLE_HOME válida para executar o runInstaller
⚠️ O runInstaller deve ser executado a partir de uma home diferente da que será removida. Se você usar a home que quer deletar, o comando vai falhar ou se comportar de forma inesperada.
No exemplo acima, a home a ser removida é Orasidb19c_home1_2380. O runInstaller será chamado a partir de Orasidb19c_home1_9789:
export RUNNER_HOME=/u01/app/oracle/product/19.25.0.0/dbhome_13. Execute o detachHome
$RUNNER_HOME/oui/bin/runInstaller \
-silent \
-detachHome \
ORACLE_HOME="/u01/app/oracle/product/19.26.0.0/dbhome_1" \
ORACLE_HOME_NAME="Orasidb19c_home1_2380"💡 Os valores de
ORACLE_HOMEeORACLE_HOME_NAMEdevem ser exatamente os que estão noinventory.xml— copie do arquivo para evitar erros de digitação.
4. Valide o resultado
cat /u01/app/oraInventory/ContentsXML/inventory.xmlDiferente do deinstall, o runInstaller -detachHome remove a entrada completamente do inventory.xml — ela não aparece mais, nem com REMOVED="T".
Checklist rápido
cat /u01/app/oraInventory/ContentsXML/inventory.xml
export RUNNER_HOME=/u01/app/oracle/product/19.25.0.0/dbhome_1
$RUNNER_HOME/oui/bin/runInstaller \
-silent \
-detachHome \
ORACLE_HOME="/u01/app/oracle/product/19.26.0.0/dbhome_1" \
ORACLE_HOME_NAME="Orasidb19c_home1_2380"
cat /u01/app/oraInventory/ContentsXML/inventory.xmlPerguntas frequentes
É seguro editar o inventory.xml diretamente? Não. A Oracle não suporta alterações manuais. Use sempre o runInstaller -detachHome.
Preciso reiniciar o servidor? Não é necessário. Mas confirme que nenhum processo está usando a home antes de executar. Você pode verificar com:
fuser -cu /u01/app/oracle/product/19.26.0.0/dbhome_1Qual a diferença entre deinstall e runInstaller -detachHome?
deinstall | runInstaller -detachHome | |
|---|---|---|
| Remove os binários do disco | ✅ Sim | ❌ Não |
| Atualiza o inventory.xml | ✅ Sim (marca REMOVED="T") | ✅ Sim (remove a entrada) |
| Funciona sem o diretório | ❌ Não | ✅ Sim |
| Suportado pela Oracle | ✅ Sim | ✅ Sim |
