Core dump-bestand genereren van Oracle Concurrent Manager
Oracle concurrent managers bestaan uit veel uitvoerbare bestanden en we hebben er vaak verschillende problemen mee gehad. Wanneer een uitvoerbaar bestand eindigt met een segmentatiefout of signaal 11, moet een kernbestand voor oracle concurrent manager worden gemaakt.
Als u niet merkt dat er een kernbestand is gemaakt, kan de ulimit voor kernbestanden op uw systeem op 0 worden gezet.
Controleer dit als volgt:
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
Controleer de uitvoer op "core file size (blocks)". Als dit is ingesteld op 0 of een lage waarde, kan deze worden gereset zodat kernbestanden van elke grootte in de huidige sessie kunnen worden gemaakt met behulp van de syntaxis:
ulimit -c unlimited
Als Unix-gebruiker dit in de omgeving heeft ingesteld voordat de gelijktijdige manager en de Apps-listener worden gestart,
dan kan de gelijktijdige verwerkingsomgeving kernbestanden maken.
Het uitvoerbare bestand dat eindigt op segmentatiefout of signaal 11 moet opnieuw worden gekoppeld met debug-symbolen om een bruikbaar kernbestand te krijgen. Dit wordt gedaan door de parameter link_debug=y door te geven aan adrelink.sh.
Bijvoorbeeld:
adrelink.sh force=y link_debug=y "fnd FNDLIBR"
Zodra het uitvoerbare bestand opnieuw is gekoppeld met foutopsporingssymbolen en u een kernbestand hebt, moet u ervoor zorgen dat u het juiste
kernbestand hebt voor het uitvoerbare bestand dat is gecrasht met behulp van de syntaxis:
file core core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'
Gebruik nu de debugger om een stacktracering te krijgen.
Voor Linux is de debugger gdb:
gdb $FND_TOP/bin/FNDLIBR core
Voor Solaris is de debugger dbx:
dbx $FND_TOP/bin/FNDLIBR core
Debugcode toevoegen aan het uitvoerbare bestand van de toepassing zoals geleverd door Oracle Support
Het wordt vaak gezien dat de hierboven gegenereerde core dump niet voldoende is om het probleem op te lossen. Oracle Support kan dus een foutopsporingscode leveren om het probleem verder te verdiepen
Dit zijn de algemene stappen voor het toevoegen van foutopsporingscodes in het uitvoerbare bestand van de app.
In feite zijn dit stappen die zelfs worden gevolgd door adpatch om lib-bestanden in het uitvoerbare bestand van het product te vervangen
Laten we zeggen dat u het objectbestand "invir.o" moet koppelen aan het uitvoerbare bestand INVLIBR.
Voordat u iets doet, moet u ervoor zorgen dat de gelijktijdige beheerders zijn uitgeschakeld.
Laten we eerst de versies controleren:
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 $
Dus we hebben momenteel versie 115.6 op ons systeem en moeten 115.6.debug linken
De eerste stap is om een back-up te maken van de huidige versie:
cd $INV_TOP/lib; cp invir.o invir.o.save
Kopieer in de debug-versie:
cp /u00/to/debug/file/invir.o .
Maak een back-up van bestanden
cp libinv.a libinv.a.save
Voeg nu de debug-versie toe aan libinv.a (vergeet deze stap niet)
ar rv libinv.a invir.o
Nu kunt u INVLIBR opnieuw koppelen:(u kunt ook beheerder gebruiken)
adrelink.sh force=y "inv INVLIBR"
Bij het controleren van de versie wordt nu weergegeven:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aweisber ship $
Onze debug-code is gekoppeld en klaar om te worden uitgevoerd. Start de managers weer op en debug dingen zouden beschikbaar zijn. Zodra het probleem is gereproduceerd, kunnen we de foutopsporing uitschakelen door de onderstaande procedure te volgen
De eerste stap is om een back-up te maken van de huidige versie en de oude code terug te zetten
cd $INV_TOP/lib; cp invir.o invir.o.debug cp invir.o.save invir.o
Herstel het oude .a-bestand
cp libinv.a.save libinv.a
Nu kunt u INVLIBR opnieuw koppelen:(u kunt ook beheerder gebruiken)
adrelink.sh force=y "inv INVLIBR"
Bij het controleren van de versie wordt nu weergegeven:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $
Gerelateerde artikelen
EBS R12-componenten vinden Versie
Oracle EBS 11i/R12/R12.1/R12.2
Oracle DBA:Hanganalyze, systeemstatusdump,v$wait_chains
Hoe de SQL-tracering, 10046-gebeurtenis in Oracle-database en trcsess, tkprof-hulpprogramma in te schakelen