Generierung der Core-Dump-Datei von Oracle Concurrent Manager
Oracle Concurrent Manager besteht aus vielen ausführbaren Dateien, und wir hatten oft verschiedene Probleme damit. Wenn eine ausführbare Datei mit einem Segmentierungsfehler oder Signal 11 endet, sollte eine Kerndatei für Oracle Concurrent Manager erstellt werden.
Wenn Sie feststellen, dass keine Core-Datei erstellt wird, ist ulimit für Core-Dateien auf Ihrem System möglicherweise auf 0 gesetzt.
Überprüfen Sie dies wie folgt:
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
Überprüfen Sie die Ausgabe auf „Kerndateigröße (Blöcke)“. Wenn dieser Wert auf 0 oder einen niedrigen Wert gesetzt ist, kann er zurückgesetzt werden, damit Kerndateien jeder Größe in der aktuellen Sitzung mit der folgenden Syntax erstellt werden können:
ulimit -c unlimited
Wenn der Unix-Benutzer diesen Satz in der Umgebung hat, bevor er den Concurrent Manager und den Apps-Listener startet,
dann kann die Concurrent-Processing-Umgebung Core-Dateien erstellen.
Die ausführbare Datei, die mit Segmentierungsfehler oder Signal 11 endet, sollte mit Debug-Symbolen erneut verknüpft werden, um eine nützliche Kerndatei zu erhalten. Dazu wird der Parameter link_debug=y an adrelink.sh übergeben.
Zum Beispiel:
adrelink.sh force=y link_debug=y "fnd FNDLIBR"
Nachdem die ausführbare Datei mit Debug-Symbolen neu verknüpft wurde und Sie eine Kerndatei haben, vergewissern Sie sich, dass Sie die richtige
Kerndatei für die ausführbare Datei haben, die mit der folgenden Syntax abgestürzt ist:
file core core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'
Verwenden Sie nun den Debugger, um einen Stack-Trace zu erhalten.
Für Linux ist der Debugger gdb:
gdb $FND_TOP/bin/FNDLIBR core
Für Solaris ist der Debugger dbx:
dbx $FND_TOP/bin/FNDLIBR core
Hinzufügen von Debug-Code zur ausführbaren Datei der Anwendung, wie vom Oracle-Support bereitgestellt
Es wird oft gesehen, dass der oben generierte Core-Dump nicht ausreicht, um das Problem zu beheben. Der Oracle-Support könnte daher einen Debug-Code bereitstellen, um das Problem weiter zu vertiefen
Hier sind die allgemeinen Schritte zum Hinzufügen von Debug-Codes zur ausführbaren Datei der Anwendung.
Tatsächlich sind dies Schritte, denen sogar adpatch folgt, um lib-Dateien in der ausführbaren Produktdatei zu ersetzen
Angenommen, Sie müssen die Objektdatei „invir.o“ in die ausführbare INVLIBR-Datei einbinden.
Bevor Sie etwas unternehmen, vergewissern Sie sich, dass die gleichzeitigen Manager heruntergefahren sind.
Überprüfen wir zuerst die Versionen:
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 $
Wir haben also derzeit Version 115.6 auf unserem System und müssen 115.6.debug einbinden
Der erste Schritt besteht darin, die aktuelle Version zu sichern:
cd $INV_TOP/lib; cp invir.o invir.o.save
Kopieren Sie die Debug-Version:
cp /u00/to/debug/file/invir.o .
Sicherungskopie der Dateien erstellen
cp libinv.a libinv.a.save
Fügen Sie nun die Debug-Version zu libinv.a hinzu (vergessen Sie diesen Schritt nicht)
ar rv libinv.a invir.o
Jetzt können Sie INVLIBR erneut verknüpfen:(Sie können auch adadmin verwenden)
adrelink.sh force=y "inv INVLIBR"
Die Überprüfung der Version zeigt nun:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aweisber ship $
Unser Debug-Code ist eingebunden und kann ausgeführt werden. Starten Sie die Manager-Sicherung, und Debugging-Sachen wären verfügbar. Sobald das Problem reproduziert wurde, können wir das Debugging deaktivieren, indem wir das folgende Verfahren befolgen
Der erste Schritt besteht darin, die aktuelle Version zu sichern und den alten Code zurück zu verschieben
cd $INV_TOP/lib; cp invir.o invir.o.debug cp invir.o.save invir.o
Stellen Sie die alte .a-Datei wieder her
cp libinv.a.save libinv.a
Jetzt können Sie INVLIBR erneut verknüpfen:(Sie können auch adadmin verwenden)
adrelink.sh force=y "inv INVLIBR"
Die Überprüfung der Version zeigt nun:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $
Verwandte Artikel
So finden Sie die Version der EBS R12-Komponenten
Oracle EBS 11i/R12/R12.1/R12.2
Oracle-DBA:Hanganalyze, Systemstatusauszug, v$wait_chains
So aktivieren Sie den SQL-Trace, das Ereignis 10046 in der Oracle-Datenbank und das Dienstprogramm trcsess, tkprof