Problema
Ao tentar aplicar o OGG RU 19.22 em em uma instalação de Golden Gate 19c, o OPatch falhou com o erro abaixo:
[oracle@dbserver 36238779]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -oh $ORACLE_HOME -ph ./ versão do Installer Temporário Oracle 12.2.0.1.41 Copyright (c) 2024, Oracle Corporation. Todos os direitos reservados. PREREQ session Oracle Home : /u01/ogg19 Inventário Central: /u01/app/oraInventory de : /u01/ogg19/oraInst.loc Versão de OPatch : 12.2.0.1.41 Versão de OUI : 12.2.0.4.0 Localização do arquivo de log: /u01/ogg19/cfgtoollogs/opatch/opatch2024-04-06_21-50-15PM_1.log Invoking prereq "checkconflictagainstohwithdetail" List of Homes on this system: Home name= Ora11g_gridinfrahome1, Location= "/u01/app/11.2.0/grid" Home name= OraHome7, Location= "/ogg/ogg19" Home name= OraDb11g_home1, Location= "/u01/app/oracle/product/11.2.0/db" Home name= agent13c1, Location= "/u01/app/oracle/product/13.2.0/agent/agent_13.4.0.0.0" List of Homes on this system: Home name= Ora11g_gridinfrahome1, Location= "/u01/app/11.2.0/grid" Home name= OraHome7, Location= "/ogg/ogg19" Home name= OraDb11g_home1, Location= "/u01/app/oracle/product/11.2.0/db" Home name= agent13c1, Location= "/u01/app/oracle/product/13.2.0/agent/agent_13.4.0.0.0" List of Homes on this system: Home name= Ora11g_gridinfrahome1, Location= "/u01/app/11.2.0/grid" Home name= OraHome7, Location= "/ogg/ogg19" Home name= OraDb11g_home1, Location= "/u01/app/oracle/product/11.2.0/db" Home name= agent13c1, Location= "/u01/app/oracle/product/13.2.0/agent/agent_13.4.0.0.0" Prereq "checkConflictAgainstOHWithDetail" is not executed. List of Homes on this system: Home name= Ora11g_gridinfrahome1, Location= "/u01/app/11.2.0/grid" Home name= OraHome7, Location= "/ogg/ogg19" Home name= OraDb11g_home1, Location= "/u01/app/oracle/product/11.2.0/db" Home name= agent13c1, Location= "/u01/app/oracle/product/13.2.0/agent/agent_13.4.0.0.0" PrereqSession falhou: RawInventory gets null OracleHomeInfo OPatch failed with error code 2
Causa
O erro “PrereqSession falhou: RawInventory gets null OracleHomeInfo” ocorre quando o Oracle Home em questão não é encontrado no oraInventory. Isso é comum em ambientes onde o binário do OGG é copiado de um servidor para o outro, sem usar o “runInstaller” para concluir a instalação do software.
Apesar de o Golden Gate funcionar normalmente com esse tipo de “instalação”, a não execução do runInstaller implica que o OGG Home não é registrado no oraInventory do servidor. Na prática, é como se esse tipo de instalação fosse considerada “informal” para ferramentas para o OPatch que depedem do registro do oraInventory para funcionar corretamente.
Solução
Uma solução para este problema é usar a opção “-attachHome” do runInstaller.
O script runInstaller.sh pode ser encontrado dentro do <OOG_HOME>/oui/bin.
Neste exemplo, a variável ORACLE_HOME já está definida apontando para o Home do OGG devido a execução dos comandos com OPatch.
Note que em “ORACLE_HOME_NAME” estou definindo um nome amigável que ajuda a identificar melhor esse novo OH dentro do oraInventory:
cd $ORACLE_HOME/oui/bin ./runInstaller -invPtrLoc /etc/oraInst.loc -attachHome ORACLE_HOME=$ORACLE_HOME ORACLE_HOME_NAME="OGG19c_DB11g_home1" -silent
Exemplo da saída deste comando:
[oracle@dbserver bin]$ ./runInstaller -invPtrLoc /etc/oraInst.loc -attachHome ORACLE_HOME=$ORACLE_HOME ORACLE_HOME_NAME="OGG19c_DB11g_home1" -silent Iniciando Oracle Universal Installer... Verificando espaço de swap: deve ser superior a 500 MB. 15575 MB Reais Passado The inventory pointer is located at /u01/ogg19/oraInst.loc 'AttachHome' bem-sucedido.
Ao executar o OPatch novamente, ele identifica o ORACLE_HOME e conclui com sucesso:
[oracle@dbserver bin]$ cd $PATCH_DIR [oracle@dbserver 36238779]$ [oracle@dbserver 36238779]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./ versão do Installer Temporário Oracle 12.2.0.1.41 Copyright (c) 2024, Oracle Corporation. Todos os direitos reservados. PREREQ session Oracle Home : /u01/ogg19 Inventário Central: /u01/app/oraInventory de : /u01/ogg19/oraInst.loc Versão de OPatch : 12.2.0.1.41 Versão de OUI : 12.2.0.4.0 Localização do arquivo de log: /u01/ogg19/cfgtoollogs/opatch/opatch2024-04-06_21-55-49PM_1.log Invoking prereq "checkconflictagainstohwithdetail" Prereq "checkConflictAgainstOHWithDetail" passed. OPatch succeeded.
Por envolver apenas alteração do arquivo do oraInventory e não modificar o binário propriamente dito, este comando pode ser executado com os processos do OGG no ar que não devem ser afetados.
De qualquer forma, por segurança, recomendo executar apenas dentro de uma janela de manutenção.
Pingback: Como Aplicar OGG RU + JDK Update no Golden Gate 19c – Blog do Dibiei