sql >> Database >  >> RDS >> Oracle

Kerndumpbestand en foutopsporingscodes toevoegen in het uitvoerbare programma voor Oracle Apps

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


  1. Slaapstand> CLOB> Oracle :(

  2. Hoe SQLite-queryresultaten op te maken in TCL-modus

  3. Hoe doe je een update + join in PostgreSQL?

  4. Een beperking van een externe sleutel in SQL Server uitschakelen (T-SQL-voorbeelden)