Problema
Durante a instalação de um novo Oracle Home do Grid, o gridSetup.sh apresentou o erro abaixo:
You can find the log of this install session at: /u01/app/oraInventory/logs/GridSetupActions2024-06-01_07-39-19PM/gridSetupActions2024-06-01_07-39-19PM.log [FATAL] Error in invoking target 'libasmclntsh19.ohso libasmperl19.ohso client_sharedlib' of makefile '/u01/app/19.0.0/clone1/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oraInventory/logs/Gr-01_07-39-19PM/gridSetupActions2024-06-01_07-39-19PM.log' for details.
Abrindo o arquivo de log gerado pelo instalador e indo para o final do arquivo (Shift + G), aparece essa mensagem:
.... INFO: genclntsh: genclntsh: Could not locate /u01/app/19.0.0/clone1/network/admin/shrept.lst INFO: make: *** [/u01/app/19.0.0/clone1/rdbms/lib/ins_rdbms.mk:56: client_sharedlib] Error 1 INFO: End output from spawned process. INFO: ---------------------------------- INFO: Exception thrown from action: make Exception Name: MakefileException Exception String: Error in invoking target 'libasmclntsh19.ohso libasmperl19.ohso client_sharedlib' of makefile '/u01/app/19.0.0/clone1/rdbms/lib/ins_rdbms.mk'. See '/u01/app/oraInventory/logs/GridSetupActions2024-06-01_07-48-20PM/gridSetupActions2024-06-01_07-48-20PM.log' for details. Exception Severity: 1
Trata-se da ausência do arquivo “$ORACLE_HOME/network/admin/shrept.lst“. Este é um problema conhecido de versões anteriores e a Oracle tem uma nota no MOS com o workaround para cada versão:
“genclntsh: Could not locate $ORACLE_HOME/network/admin/shrept.lst” (Doc ID 340978.1)
Este arquivo shrept.lst acompanha o binário do Oracle desde a sua primeira instalação, e normalmente esse erro só deve ser visto em cenário em que estamos rodando uma instalação usando a cópia de um Oracle Home ou uma GoldImage que teve o conteúdo do diretório “ORACLE_HOME/network/admin” deletado.
Também se tentarmos fazer o relink de um Oracle Home existente onde teve esse arquivo foi deletado, deve apresentar o mesmo erro. Por fim, esse erro pode ocorrer tanto com o Grid Infrastructure, quanto com o Oracle Database.
Solução
Se tiver outro Oracle Home da mesma versão disponível no servidor, ou em algum outro servidor, você pode copiar este arquivo para o Oracle Home que está apresentando erro na instalação ou no relink.
Além de copiar, você também pode criar o arquivo com “vi” ou outro editor de texto, desde que tenha o conteúdo correto para adicionar.
A nota Doc ID 340978.1 tem uma cola com o conteúdo deste arquivo para diversas versões.
Abaixo o conteúdo que pode ser usado para criar o arquivo em um Oracle Home da versão 19c:
# function entry points for genclntsh.sh network : snaumihi_inithostinfo network : snaumbg_gmt network : naedpwd_encrypt network : naumbsb_bld_singlebyte network : nlgh network : nsdhctx_establish network : nsdhctx_respond network : nsdhctx_close network : nsdhctx_inuse network : snlsmDscFromString network : snlsmCreate network : snlsmDestroy network : snlsmDscToString network : ngsmutl_init_ul network : ngsmutl_init_com network : ngsmutl_destroy network : ngsmutl_add_value network : ngsmutl_add_type network : ngsmutl_convert_key network : ngsmutl_make_hash_type network : ngsmutl_key_hash network : ngsmutl_key_init network : ngsmutl_key_save network : ngsmutl_key_copy network : ngsmutl_key_free network : ngsmutl_key_cmpns network : ngsmutl_key_cmp_optimistic network : ngsmutl_sort network : ngsmuit_new network : ngsmuit_root network : ngsmuit_find_node network : ngsmuit_find_nodes network : ngsmuit_find_insts network : ngsmuit_insert network : ngsmuit_delete network : ngsmuit_remove_inst_opt network : ngsmuit_add_inst network : ngsmuit_destroy network : ngsmsl_init network : ngsmsl_terminate network : ngsmsl_sdbctx_init network : ngsmsl_sdbctx_terminate network : ngsmsl_key_init network : ngsmsl_shardkey_add_column network : ngsmsl_key2base64 network : ngsmsl_shardkey_free network : ngsmsl_build_topology network : ngsmsl_lookup_insts network : ngsmsl_chunk_down network : ngsmsl_chunk_up network : ngsmsl_remove_inst network : snlsinf network : snlsinfs network : snlsinfwf network : snlsinfi network : snlsinft
Se você optar por criar o arquivo manualmente, altere a permissão para 644, conforme exemplo abaixo:
vi $ORACLE_HOME/network/admin/shrept.lst chmod 644 $ORACLE_HOME/network/admin/shrept.lst
ATENÇÃO: Não use uma cópia do arquivo de uma versão diferente, este arquivo sofre alterações de uma versão para outra.
Após criar o arquivo, repita a operação que falhou durante o relink.
Corrigindo uma Gold Image
Se você criou uma Gold Image usando a opção -createGoldImage e a opção -exclFiles para não incluir o conteúdo do diretório “ORACLE_HOME/network/admin”, então este problema deve acontecer toda vez que precisar usar essa Gold Image, a menos que você sempre crie o arquivo manualmente dentro do home após descompactar o conteúdo do arquivo “.zip”.
Outro cenário que isso deve ser um problema é se você tentar usar esse arquivo .zip para importar a Gold Image dentro do Oracle Fleet Patching and Provisioning (FPP) com o comando “rhcptl import image” e a opção -zip. Isso porque ao importar uma Gold Image, o FPP sempre faz um relink do binário dentro do ACFS durante o processo.
Para corrigir o conteúdo de uma Gold Image compactada como “.zip”, que é o padrão da função -createGoldImage, siga os passos abaixo.
Nestes exemplos, o arquivo que representa a Gold Image é “/u01/medias/GI1923.zip”.
Exemplo 1: Você está em um servidor que tem um Oracle Home com o arquivo original para incluir no arquivo “.zip”.
cd $ORACLE_HOME zip -r /u01/medias/GI1923.zip network/admin/shrept.lst
Exemplo 2: Você pode criar a estrutura de diretório e o arquivo dentro do /tmp:
cd /tmp mkdir network/admin vi network/admin/shrept.lst chmod 644 network/admin/shrept.lst zip -r /u01/medias/GI1923.zip network/admin/shrept.lst