Voir aussi Known problems with the Routine debugger for updates.
Pour éviter ce problème, mettez à jour la configuration du gestionnaire de base de données afin de spécifier un kit Java Development Kit différent en exécutant les commandes suivantes depuis une fenêtre de commande DB2 :
db2 update dbm cfg using JDK_PATH new-JDK-path
db2set DB2LIBPATH
db2set DB2LIBPATH=/home/db2inst1/sqllib/java/jdk64/jre/lib/amd64
db2stop force
db2start
db2set DB2LIBPATH
Pour modifier la préférence pour l'emplacement du gestionnaire de session du débogueur de routines, sélectionnez Emplacement du gestionnaire de session de débogage de routine, sélectionnez Utiliser le gestionnaire de sessions intégré ou Utiliser un gestionnaire de sessions déjà actif.
. Dans Préférences, choisissez pour sélectionner les préférences de débogage. Sélectionnez le serveur de base de données des routines à déboguer. Dans la sectionLorsque vous déboguez une routine sur une base de données DB2 locale, il est possible que le numéro d'erreur SQL1224N s'affiche :
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL1224N Un agent de base de données n'a pas pu être démarré pour satisfaire une demande ou a été interrompu à la suite d'un arrêt normal du système ou d'une commande FORCE. SQLSTATE=55032
Cette erreur est due à un problème qui survient dans le noyau Linux (problème Bugzilla lié au noyau Linux / bogue n°351). Les instructions suivantes permettent d'appliquer une solution palliative qui utilise la méthode de connexion TCPIP de DB2 (comme bouclage) au lieu de l'interface CLI (Call Level Interface). Dans cette procédure, le débogueur utilise le même alias de base de données que précédemment :
Les étapes 2 à 7 requièrent que vous vous connectiez en tant que propriétaire de l'instance DB2.
db2set db2comm
Si la sortie ne contient pas le mot clé tcpip, vous devez entrer la commande suivante pour mettre à jour la variable de registre db2comm afin d'inclure tcpip :
db2set db2comm=<noms des protocoles existants>,tcpip
La variable de registre db2comm détermine quel gestionnaire de connexions de protocole est activé lorsque le gestionnaire de la base de données est démarré. Vous pouvez définir cette variable pour plusieurs protocoles de communication en séparant les mots clés par une virgule.
Vous devez émettre à nouveau la commande db2start afin de démarrer les gestionnaires de connexions pour les protocoles spécifiés par le paramètre de registre db2comm. Vous allez redémarrer DB2 à l'étape 7 ; il n'est donc pas nécessaire d'effectuer cette opération maintenant.
.Pour consulter la valeur actuelle de SVCENAME, entrez la commande suivante :
db2 get dbm cfg | grep -i svcename
Si vous devez mettre à jour la valeur de SVCENAME, entrez la commande suivante :
db2 update dbm cfg using svcename <nom du service de connexion>
où la distinction minuscules/majuscules est appliquée au <nom du service de connexion> et où cette valeur correspond au nom du port du service que vous avez placé dans /etc/services (par exemple db2 update dbm cfg using svcename db2c_db2inst1).
La mise à jour de la configuration du gestionnaire de la base de données n'est pas appliquée tant qu'une nouvelle commande db2start n'a pas été émise. Vous effectuerez cette opération à l'étape 7.
db2 catalog tcpip node <nom_noeud> remote <nom_hôte> server <nom du service de connexion>
où
Pour vérifier que la commande catalog a abouti, émettez la commande suivante :
db2 list node directory
Exemple de sortie de cette commande (les lignes vierges ont été supprimées pour une meilleure lisibilité) :
Répertoire des noeuds Nombre d'entrées dans le répertoire = 1 Entrée du noeud 1 : Nom du noeud = MYNODE Commentaire = Protocole = TCPIP Nom d'hôte = 127.0.0.1 Nom de service = db2c_db2inst1
Exemple :db2 catalog db WAS as WASLOOP db2 uncatalog db WAS db2 catalog db WASLOOP as WAS at node MYNODE
Remarques :
Sortie exemple pour les étapes 5a à 5c
Une base de données locale appelée WAS a été créée avant l'étape 5a. La sortie de la commande db2 list db directory est similaire au message suivant :
Répertoire système des bases de données
Nombre d'entrées dans le répertoire = 1
Entrée de la base de données 1 :
Alias de la base de données = WAS
Nom de la base de données = WAS
Répertoire des bases de données locales = /home/ctsui
Niveau d'édition de la base de données = 9.00
Commentaire =
Type d'entrée du répertoire = Indirect
Numéro de noeud catalogue = 0
Après l'étape 5a, la sortie de la commande db2 list db directory est similaire au message suivant :
Répertoire système des bases de données
Nombre d'entrées dans le répertoire = 2
Entrée de la base de données 1 :
Alias de la base de données = WAS
Nom de la base de données = WAS
Répertoire des bases de données locales = /home/ctsui
Niveau d'édition de la base de données = 9.00
Commentaire =
Type d'entrée du répertoire = Indirect
Numéro de noeud catalogue = 0
Entrée de la base de données 2 :
Alias de la base de données = WASLOOP
Nom de la base de données = WAS
Répertoire des bases de données locales = /home/ctsui
Niveau d'édition de la base de données = 9.00
Commentaire =
Type d'entrée du répertoire = Indirect
Numéro de noeud catalogue = 0
Après l'étape 5b, la sortie de la commande db2 list db directory est similaire au message suivant :
Répertoire système des bases de données
Nombre d'entrées dans le répertoire = 1
Entrée de la base de données 1 :
Alias de la base de données = WASLOOP
Nom de la base de données = WAS
Répertoire des bases de données locales = /home/ctsui
Niveau d'édition de la base de données = 9.00
Commentaire =
Type d'entrée du répertoire = Indirect
Numéro de noeud catalogue = 0
Après l'étape 5c, la sortie de la commande db2 list db directory est similaire au message suivant :
Répertoire système des bases de données
Nombre d'entrées dans le répertoire = 2
Entrée de la base de données 1 :
Alias de la base de données = WAS
Nom de la base de données = WASLOOP
Nom du noeud = MYNODE
Niveau d'édition de la base de données = 9.00
Commentaire =
Type d'entrée du répertoire = Remote
Numéro de noeud catalogue = -1
Entrée de la base de données 2 :
Alias de la base de données = WASLOOP
Nom de la base de données = WAS
Répertoire des bases de données locales = /home/ctsui
Niveau d'édition de la base de données = 9.00
Commentaire =
Type d'entrée du répertoire = Indirect
Numéro de noeud catalogue = 0
Pour vérifier que la commande catalog db a abouti, émettez les deux commandes suivantes (et consultez la sortie exemple ci-dessous) :
db2 connect to wasloop
db2 connect to was
où db2 connect to wasloop émet une sortie des informations de connexion et db2 connect to was génère le message SQL1403N.
Sortie exemple de db2 connect to wasloop :
Informations de connexion à la base de données
Répertoire système des bases de données
Serveur de base de données = DB2/6000 6.1.0
ID utilisateur SQL = CTSUI
Alias local de la base de données = WASLOOP
Sortie exemple de db2 connect to was:
Informations de connexion à la base de données
Répertoire système des bases de données
Serveur de base de données = DB2/6000 6.1.0
ID utilisateur SQL = CTSUI
Alias local de la base de données = WAS
db2 update dbm cfg using authentication client
Pour vérifier que la commande a abouti, affichez le nouveau paramètre avec la commande suivante :
db2 get dbm cfg
Sortie exemple :
....
Authentification du gestionnaire de BDD (AUTHENTICATION) = CLIENT
....
db2stop
db2start
Remarque : il se peut que vous deviez utiliser db2stop force pour fermer toutes les connexions de base de données actives.
Exemple :db2 attach to MYNODE user myid using mypasswd db2 drop db WAS