sql >> Base de Datos >  >> RDS >> Oracle

Archivo de volcado del núcleo y adición de códigos de depuración en el ejecutable de la aplicación para Oracle Apps

Generación de archivos de volcado de núcleo de Oracle Concurrent Manager

Los administradores concurrentes de Oracle consisten en muchos ejecutables y, a menudo, enfrentamos varios problemas con ellos. Cuando un ejecutable finaliza con una falla de segmentación o señal 11, se debe crear un archivo central para el administrador concurrente de Oracle.

Si no encuentra que se haya creado un archivo principal, entonces el ulimit puede establecerse en 0 para los archivos principales en su sistema.
Compruebe esto de la siguiente manera:
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

Verifique la salida para "tamaño de archivo principal (bloques)". Si se establece en 0 o en un valor bajo, se puede restablecer para permitir que se creen archivos principales de cualquier tamaño en la sesión actual usando la sintaxis:

ulimit -c unlimited

Si el usuario de Unix tiene esto configurado en el entorno antes de iniciar el administrador concurrente y el detector de aplicaciones,
entonces el entorno de procesamiento concurrente podrá crear archivos principales.

El ejecutable que termina en falla de segmentación o señal 11 debe volver a vincularse con símbolos de depuración para
para obtener un archivo central útil. Esto se hace pasando el parámetro link_debug=y a adrelink.sh.
Por ejemplo:

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

Una vez que el ejecutable se vuelve a vincular con los símbolos de depuración y tiene un archivo principal, asegúrese de tener el archivo principal
correcto para el ejecutable que falló utilizando la sintaxis:

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

Ahora use el depurador para obtener un seguimiento de la pila.
Para Linux, el depurador es gdb:

gdb $FND_TOP/bin/FNDLIBR core

Para Solaris, el depurador es dbx:

dbx $FND_TOP/bin/FNDLIBR core

Agregar código de depuración al ejecutable de la aplicación proporcionado por Oracle Support

A menudo se ve que el volcado del núcleo generado anteriormente no es suficiente para solucionar el problema. Por lo tanto, Oracle Support podría proporcionar un código de depuración para profundizar más en el problema

Estos son los pasos generales sobre cómo agregar códigos de depuración en el ejecutable de la aplicación.

De hecho, estos son pasos incluso seguidos por adpatch para reemplazar archivos lib en el ejecutable del producto

Digamos que necesita vincular el archivo de objeto "invir.o" al ejecutable INVLIBR.

Antes de hacer nada, asegúrese de que los administradores concurrentes estén apagados.

Primero revisemos las versiones:

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 $

Por lo tanto, actualmente tenemos la versión 115.6 en nuestro sistema y necesitamos vincularnos en 115.6.debug
El primer paso es hacer una copia de seguridad de la versión actual:

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

Copiar en la versión de depuración:

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

Hacer una copia de seguridad de los archivos

cp libinv.a libinv.a.save

Ahora agregue la versión de depuración a libinv.a (No olvide este paso)

ar rv libinv.a invir.o

Ahora puede volver a vincular INVLIBR:(también puede usar adadmin)

adrelink.sh force=y "inv INVLIBR"

Verificar la versión ahora muestra:

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

Nuestro código de depuración está vinculado y listo para ejecutarse. Inicie la copia de seguridad de los administradores y las cosas de depuración estarán disponibles. Una vez que se reproduce el problema, podemos desactivar la depuración siguiendo el siguiente procedimiento

El primer paso es hacer una copia de seguridad de la versión actual y volver a mover el código anterior

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

Restaurar el antiguo archivo .a

cp libinv.a.save libinv.a

Ahora puede volver a vincular INVLIBR:(también puede usar adadmin)

adrelink.sh force=y "inv INVLIBR"

Verificar la versión ahora muestra:

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

Artículos relacionados

Cómo encontrar la versión de los componentes de EBS R12

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

Oracle DBA:Hanganalyze, volcado de estado del sistema, v$wait_chains

Cómo activar el seguimiento SQL, evento 10046 en la base de datos Oracle y trcsess, utilidad tkprof