Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Arquivo de dump principal e adição de códigos de depuração no executável do aplicativo para Oracle Apps

Geração de arquivo de dump principal do Oracle Concurrent Manager


Os gerenciadores simultâneos do Oracle consistem em muitos executáveis ​​e muitas vezes enfrentamos vários problemas com ele. Quando um executável termina com uma falha de segmentação ou sinal 11, um arquivo principal para o gerenciador simultâneo do Oracle  deve ser criado.

Se você não descobrir que um arquivo principal foi criado, o ulimit pode ser definido como 0 para arquivos principais em seu sistema.
Verifique isso da seguinte forma:
ulimit -a
ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) unlimited
coredump(blocks) unlimited
nofiles(descriptors) 4096
vmemory(kbytes) unlimited

Verifique a saída para "tamanho do arquivo principal (blocos)". Se for definido como 0 ou um valor baixo, ele poderá ser redefinido para permitir que arquivos principais de qualquer tamanho sejam criados na sessão atual usando a sintaxe:
ulimit -c unlimited

Se o usuário Unix tiver isso definido no ambiente antes de iniciar o gerenciador simultâneo e o ouvinte de aplicativos,
o ambiente de processamento simultâneo poderá criar arquivos principais.

O executável que está terminando em falha de segmentação ou sinal 11 deve ser revinculado com símbolos de depuração
para obter um arquivo central útil. Isso é feito passando o parâmetro link_debug=y para adrelink.sh.
Por exemplo:
adrelink.sh force=y link_debug=y "fnd FNDLIBR"

Depois que o executável for revinculado com símbolos de depuração e você tiver um arquivo principal, certifique-se de ter o arquivo
core certo para o executável que travou usando a sintaxe:
file core
core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'

Agora use o depurador para obter um rastreamento de pilha.
Para Linux, o depurador é gdb:
gdb $FND_TOP/bin/FNDLIBR core

Para Solaris, o depurador é dbx:
dbx $FND_TOP/bin/FNDLIBR core

Adicionando código de depuração ao executável do aplicativo conforme fornecido pelo suporte da Oracle


Muitas vezes, o dump principal gerado acima não é suficiente para solucionar o problema. Portanto, o Suporte da Oracle pode fornecer um código de depuração para aprofundar ainda mais o problema

Aqui estão as etapas gerais sobre como adicionar códigos de depuração no executável do aplicativo.

Na verdade, essas são etapas seguidas pelo adpatch para substituir os arquivos lib no executável do produto

Digamos que você precise vincular o arquivo objeto “invir.o” ao executável INVLIBR.

Antes de fazer qualquer coisa, certifique-se de que os gerenciadores simultâneos estejam desligados.

Primeiro vamos verificar as versões:
adident Header $INV_TOP/lib/invir.o
$Header: invir.opp 115.6 2001/04/11 16:14:32 pkm ship $

adident Header /u00/to/debug/file/invir.o
$Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aeisber ship $

adident Header $INV_TOP/bin/INVLIBR |grep invir
$Header: invir.op 115.6 2001/04/11 16:14:32 pkm ship $

Portanto, atualmente temos a versão 115.6 em nosso sistema e precisamos vincular em 115.6.debug
O primeiro passo é fazer backup da versão atual:
cd $INV_TOP/lib; cp invir.o invir.o.save

Copie na versão de depuração:
cp /u00/to/debug/file/invir.o .

Faça backup dos arquivos
cp libinv.a libinv.a.save

Agora adicione a versão de depuração ao libinv.a (não se esqueça desta etapa)
ar rv libinv.a invir.o

Agora você pode revincular INVLIBR:(você também pode usar adadmin)
adrelink.sh force=y "inv INVLIBR"

Verificando a versão agora mostra:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o
$Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aweisber ship $

Nosso código de depuração está vinculado e pronto para ser executado. Inicie o backup dos gerentes e o material de depuração estará disponível. Depois que o problema for reproduzido, podemos desativar a depuração seguindo o procedimento abaixo

O primeiro passo é fazer backup da versão atual e mover o código antigo de volta
cd $INV_TOP/lib; 
cp invir.o invir.o.debug
cp invir.o.save invir.o

Restaurar o arquivo .a antigo
cp libinv.a.save libinv.a

Agora você pode revincular INVLIBR:(você também pode usar adadmin)
adrelink.sh force=y "inv INVLIBR"

Verificando a versão agora mostra:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o
$Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $

Artigos relacionados

Como encontrar a versão dos componentes do EBS R12

Oracle EBS 11i/R12/R12.1/R12.2

DBA Oracle:Hanganalyze ,despejo de estado do sistema,v$wait_chains

Como ativar o rastreamento SQL, evento 10046 no banco de dados Oracle e trcsess, utilitário tkprof