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

Core dump-fil og tilføjelse af debug-koder i applikationens eksekverbare til Oracle Apps

Kernedumpfilgenerering af Oracle Concurrent Manager

Oracle concurrent managers består af mange eksekverbare, og vi stødte ofte på forskellige problemer med det. Når en eksekverbar ender med en segmenteringsfejl eller signal 11, bør der oprettes en kernefil til oracle concurrent manager.

Hvis du ikke opdager, at der er oprettet en kernefil, kan ulimit være sat til 0 for kernefiler på dit system.
Tjek dette som følger:
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

Kontroller outputtet for "kernefilstørrelse (blokke)". Hvis dette er indstillet til 0 eller en lav værdi, kan det nulstilles for at tillade, at kernefiler af enhver størrelse oprettes i den aktuelle session ved hjælp af syntaksen:

ulimit -c unlimited

Hvis Unix-brugeren har dette indstillet i miljøet, før du starter den samtidige manager og Apps-lytteren,
så vil det samtidige behandlingsmiljø være i stand til at oprette kernefiler.

Den eksekverbare fil, der ender med segmenteringsfejl eller signal 11, bør genlinkes med fejlfindingssymboler for at
få en nyttig kernefil. Dette gøres ved at sende parameteren link_debug=y til adrelink.sh.
For eksempel:

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

Når den eksekverbare fil er genlinket med fejlfindingssymboler, og du har en kernefil, skal du sikre dig, at du har den rigtige
kernefil til den eksekverbare, der gik ned ved hjælp af syntaksen:

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

Brug nu debuggeren til at få en stak-sporing.
For Linux er debuggeren gdb:

gdb $FND_TOP/bin/FNDLIBR core

For Solaris er debuggeren dbx:

dbx $FND_TOP/bin/FNDLIBR core

Tilføjelse af fejlretningskode til den eksekverbare applikation som leveret af Oracle Support

Det ses ofte, at kernedumpet, der er genereret ovenfor, ikke er nok til at fejlfinde problemet. Så Oracle Support kan give en fejlretningskode for at dykke problemet yderligere i dybden

Her er de generelle trin til, hvordan du tilføjer fejlretningskoder i applikationens eksekverbare.

Faktisk er disse trin endda fulgt  af adpatch for at erstatte lib-filer i produktets eksekverbare

Lad os sige, at du skal linke objektfilen "invir.o" til den eksekverbare INVLIBR.

Før du gør noget, skal du sørge for, at de samtidige ledere er lukket ned.

Lad os først tjekke versionerne:

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 $

Så vi har i øjeblikket version 115.6 på vores system og skal linke i 115.6.debug
Det første skridt er at sikkerhedskopiere den nuværende version:

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

Kopiér i fejlretningsversionen:

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

Tag backup af filer

cp libinv.a libinv.a.save

Tilføj nu fejlretningsversionen til libinv.a (Glem ikke dette trin)

ar rv libinv.a invir.o

Nu kan du genlink INVLIBR:(du kan også bruge adadmin)

adrelink.sh force=y "inv INVLIBR"

Når du tjekker versionen nu, vises:

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

Vores fejlretningskode er linket ind og klar til at blive kørt. Start managerne sikkerhedskopier, og fejlretningsting ville være tilgængeligt. Når problemet er gengivet, kan vi deaktivere fejlfindingen ved at følge nedenstående procedure

Det første trin er at sikkerhedskopiere den aktuelle version og flytte den gamle kode tilbage

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

Gendan den gamle .a-fil

cp libinv.a.save libinv.a

Nu kan du genlink INVLIBR:(du kan også bruge adadmin)

adrelink.sh force=y "inv INVLIBR"

Når du tjekker versionen nu, vises:

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

Relaterede artikler

Sådan finder du EBS R12-komponentversion

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

Oracle DBA:Hanganalyze, system state dump, v$wait_chains

Sådan aktiveres SQL-sporingen, 10046-hændelsen i Oracle-databasen og trcsess, tkprof-værktøjet


  1. Forbindelse til SQL Server virker nogle gange

  2. Sådan tilføjes standardbegrænsning i MySQL

  3. Sådan eksporteres data fra SQL Server 2005 til MySQL

  4. Webinar:Sporing af forespørgselsfremskridt i SQL Server