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