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

Leave a Reply

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading