Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fichier de vidage de mémoire et ajout de codes de débogage dans l'exécutable de l'application pour Oracle Apps

Génération du fichier de vidage de mémoire d'Oracle Concurrent Manager

Les gestionnaires simultanés Oracle se composent de nombreux exécutables et nous avons souvent rencontré divers problèmes avec ceux-ci. Lorsqu'un exécutable se termine par une erreur de segmentation ou un signal 11, un fichier principal pour le gestionnaire simultané Oracle doit être créé.

Si vous ne trouvez pas qu'un fichier core est créé, alors ulimit peut être défini sur 0 pour les fichiers core de votre système.
Vérifiez ceci comme suit :
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

Vérifiez la sortie pour "taille du fichier principal (blocs)". Si ce paramètre est défini sur 0 ou sur une valeur faible, il peut être réinitialisé pour autoriser la création de fichiers principaux de n'importe quelle taille dans la session en cours à l'aide de la syntaxe :

ulimit -c unlimited

Si l'utilisateur Unix a défini ce paramètre dans l'environnement avant de démarrer le gestionnaire simultané et l'écouteur d'applications,
alors l'environnement de traitement simultané pourra créer des fichiers de base.

L'exécutable qui se termine par l'erreur de segmentation ou le signal 11 doit être reconnecté avec des symboles de débogage afin
d'obtenir un fichier de base utile. Cela se fait en passant le paramètre link_debug=y à adrelink.sh.
Par exemple :

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

Une fois que l'exécutable est reconnecté avec des symboles de débogage et que vous disposez d'un fichier core, assurez-vous d'avoir le bon
fichier core pour l'exécutable qui a planté en utilisant la syntaxe :

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

Utilisez maintenant le débogueur pour obtenir une trace de la pile.
Pour Linux, le débogueur est gdb :

gdb $FND_TOP/bin/FNDLIBR core

Pour Solaris, le débogueur est dbx :

dbx $FND_TOP/bin/FNDLIBR core

Ajout du code de débogage à l'exécutable de l'application tel que fourni par le support Oracle

On constate souvent que le vidage de mémoire généré ci-dessus n'est pas suffisant pour résoudre le problème. Le support Oracle peut donc fournir un code de débogage pour approfondir le problème

Voici les étapes générales pour ajouter des codes de débogage dans l'exécutable de l'application.

En fait, ce sont même des étapes suivies par adpatch pour remplacer les fichiers lib dans l'exécutable du produit

Disons que vous devez lier le fichier objet "invir.o" dans l'exécutable INVLIBR.

Avant de faire quoi que ce soit, assurez-vous que les gestionnaires simultanés sont fermés.

Commençons par vérifier les 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 $

Nous avons donc actuellement la version 115.6 sur notre système et nous devons établir un lien dans 115.6.debug
La première étape consiste à sauvegarder la version actuelle :

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

Copiez dans la version de débogage :

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

Faire une sauvegarde des fichiers

cp libinv.a libinv.a.save

Ajoutez maintenant la version de débogage à libinv.a (N'oubliez pas cette étape)

ar rv libinv.a invir.o

Vous pouvez maintenant réassocier INVLIBR :(vous pouvez également utiliser adadmin)

adrelink.sh force=y "inv INVLIBR"

La vérification de la version affiche maintenant :

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

Notre code de débogage est lié et prêt à être exécuté. Redémarrez les gestionnaires et des éléments de débogage seraient disponibles. Une fois le problème reproduit, nous pouvons désactiver le débogage en suivant la procédure ci-dessous

La première étape consiste à sauvegarder la version actuelle et à restaurer l'ancien code

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

Restaurer l'ancien fichier .a

cp libinv.a.save libinv.a

Vous pouvez maintenant réassocier INVLIBR :(vous pouvez également utiliser adadmin)

adrelink.sh force=y "inv INVLIBR"

La vérification de la version affiche maintenant :

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

Articles connexes

Comment trouver la version des composants EBS R12

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

Oracle DBA :Hanganalyze, vidage de l'état du système, v$wait_chains

Comment activer la trace SQL, événement 10046 dans la base de données Oracle et trcsess, utilitaire tkprof