Oracle
 sql >> Database >  >> RDS >> Oracle

File dump principale e aggiunta di codici di debug nell'eseguibile dell'applicazione per Oracle Apps

Generazione di file di dump principali di Oracle Concurrent Manager

I gestori simultanei Oracle sono costituiti da molti eseguibili e spesso abbiamo affrontato vari problemi con esso. Quando un eseguibile termina con un errore di segmentazione o con il segnale 11, è necessario creare un file principale per il gestore concorrente Oracle  .

Se non trovi che è stato creato un file core, allora ulimit potrebbe essere impostato su 0 per i file core sul tuo sistema.
Controlla come segue:
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

Controlla l'output per "dimensione del file principale (blocchi)" Se è impostato su 0 o su un valore basso, può essere reimpostato per consentire la creazione di file principali di qualsiasi dimensione nella sessione corrente utilizzando la sintassi:

ulimit -c unlimited

Se l'utente Unix ha questo set nell'ambiente prima di avviare il gestore simultaneo e il listener di app,
allora l'ambiente di elaborazione simultanea sarà in grado di creare file core.

L'eseguibile che sta terminando con un errore di segmentazione o con il segnale 11 deve essere ricollegato con i simboli di debug per
per ottenere un file core utile. Questo viene fatto passando il parametro link_debug=y ad adrelink.sh.
Ad esempio:

adrelink.sh force=y link_debug=y "fnd FNDLIBR"

Una volta che l'eseguibile è stato ricollegato con i simboli di debug e hai un file core, assicurati di avere il
file core corretto per l'eseguibile che si è arrestato in modo anomalo utilizzando la sintassi:

file core
core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'

Ora usa il debugger per ottenere una traccia dello stack.
Per Linux il debugger è gdb:

gdb $FND_TOP/bin/FNDLIBR core

Per Solaris il debugger è dbx:

dbx $FND_TOP/bin/FNDLIBR core

Aggiunta del codice di debug all'eseguibile dell'applicazione come fornito da Oracle Support

Si nota spesso che il core dump generato sopra non è sufficiente per risolvere il problema. Quindi Oracle Support potrebbe fornire un codice di debug per approfondire ulteriormente il problema

Di seguito sono riportati i passaggi generali su Come aggiungere codici di debug nell'eseguibile dell'applicazione.

In realtà questi sono passaggi seguiti anche  da adpatch per sostituire i file lib nell'eseguibile del prodotto

Diciamo che devi collegare il file oggetto "invir.o" all'eseguibile INVLIBR.

Prima di fare qualsiasi cosa, assicurati che i gestori simultanei siano chiusi.

Per prima cosa controlliamo le versioni:

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 $

Quindi attualmente abbiamo la versione 115.6 sul nostro sistema e dobbiamo collegarci a 115.6.debug
Il primo passaggio è eseguire il backup della versione corrente:

cd $INV_TOP/lib; cp invir.o invir.o.save

Copia nella versione di debug:

cp /u00/to/debug/file/invir.o .

Fai il backup dei file

cp libinv.a libinv.a.save

Ora aggiungi la versione di debug a libinv.a (non dimenticare questo passaggio)

ar rv libinv.a invir.o

Ora puoi ricollegare INVLIBR:(puoi anche usare adadmin)

adrelink.sh force=y "inv INVLIBR"

Il controllo della versione ora mostra:

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

Il nostro codice di debug è collegato e pronto per essere eseguito. Avvia il backup dei gestori e il materiale di debug sarà disponibile. Una volta che il problema è stato riprodotto, possiamo disattivare il debug seguendo la procedura seguente

Il primo passo è eseguire il backup della versione corrente e spostare indietro il vecchio codice

cd $INV_TOP/lib; 
cp invir.o invir.o.debug
cp invir.o.save invir.o

Ripristina il vecchio file .a

cp libinv.a.save libinv.a

Ora puoi ricollegare INVLIBR:(puoi anche usare adadmin)

adrelink.sh force=y "inv INVLIBR"

Il controllo della versione ora mostra:

adident Header $INV_TOP/bin/INVLIBR |grep invir.o
$Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $

Articoli correlati

Come trovare la versione dei componenti EBS R12

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

Oracle DBA:Hanganalyze, dump dello stato del sistema, v$wait_chains

Come attivare la traccia SQL, evento 10046 nel database Oracle e trcsess, utilità tkprof