Core dump file generation of Oracle Concurrent Manager
Oracle concurrent managers consists of many executable and we often faced various issues with it.When an executable ends with a segmentation fault or signal 11, a core file for oracle concurrent manager should be created.
If you are not finding that a core file is created, then the ulimit may be set to 0 for core files on your system.
Check this as follows:
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
Check the output for “core file size (blocks)” If this is set to 0 or a low value, it can be reset to allow core files of any size to be created in the current session using the syntax:
ulimit -c unlimited
If Unix user has this set in the environment before starting the concurrent manager, and the Apps listener,
then the concurrent processing environment will be able to create core files.
The executable that is ending in segmentation fault or signal 11 should be re-link with debug symbols in
order to get a useful core file. This is done by passing the link_debug=y parameter to adrelink.sh.
For example:
adrelink.sh force=y link_debug=y "fnd FNDLIBR"
Once the executable is relinked with debug symbols and you have a core file, make sure you have the right
core file for the executable that crashed using the syntax:
file core core: ELF 32-bit MSB core file SPARC Version 1, from 'FNDLIBR'
Now use the debugger to get a stack trace.
For Linux the debugger is gdb:
gdb $FND_TOP/bin/FNDLIBR core
For Solaris the debugger is dbx:
dbx $FND_TOP/bin/FNDLIBR core
Adding Debug code to the Application Executable as provided by Oracle Support
It is often seen that the core dump generated above is not enough to trouble shoot the issue.So Oracle Support might provide a debug code to further deep dive the issue
Here are the General steps on How to add debug codes in the application executable.
In fact these are steps even followed by adpatch to replace lib files in the product executable
Let’s say that you need to link the object file “invir.o” into the INVLIBR executable.
Before doing anything make sure the concurrent managers are shut down.
First lets check the versions:
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 $
So we currently have version 115.6 on our system, and need to link in 115.6.debug
The first step is to back up the current version:
cd $INV_TOP/lib; cp invir.o invir.o.save
Copy in the debug version:
cp /u00/to/debug/file/invir.o .
Take backup of files
cp libinv.a libinv.a.save
Now add the debug version to libinv.a (Do not forget this step)
ar rv libinv.a invir.o
Now you can relink INVLIBR: (you can also use adadmin)
adrelink.sh force=y "inv INVLIBR"
Checking the version now shows:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6.debug 2001/04/11 21:19:07 aweisber ship $
Our debug code is linked in and ready to be run. Start the managers back up, and debugging stuff would be available. Once the issue is reproduced , we can turn off the debugging by following the below procedure
The first step is to back up the current version and move the old code back
cd $INV_TOP/lib; cp invir.o invir.o.debug cp invir.o.save invir.o
Restore the old .a file
cp libinv.a.save libinv.a
Now you can relink INVLIBR: (you can also use adadmin)
adrelink.sh force=y "inv INVLIBR"
Checking the version now shows:
adident Header $INV_TOP/bin/INVLIBR |grep invir.o $Header: invir.opp 115.6 2001/04/11 21:19:07 aweisber ship $
Related Articles
How to find EBS R12 components Version
Oracle EBS 11i/R12/R12.1/R12.2
Oracle DBA: Hanganalyze ,system state dump,v$wait_chains
How to turn on the SQL trace, 10046 event in Oracle database and trcsess, tkprof utility