Lorsque WebSphere Business Monitor tente de traiter un événement en environnement AIX, une erreur SQL est renvoyée. Une erreur SQL est également générée en cas d'échec de l'initialisation de la connexion de base de données par WebSphere lors du démarrage et du traitement des événements. Cet échec est dû à une limite imposée par le système d'exploitation concernant le nombre de segments de mémoire partagée disponibles pour IBM DB2.
La connexion test pour la source de données MonitorDataSource sur le serveur server1 au noeud Node01 a échoué avec l'exception suivante : java.lang.Exception: java.sql.SQLException: SQL1224N A database agent could not be started to service a request, or was terminated as a result of a database system shutdown or a force command. SQLSTATE=55032 DSRA0010E: SQL State = 55032, Error Code = -1,224.
Lorsque cette erreur se produit, vous devez modifier la configuration de DB2 afin d'augmenter le nombre de segments de mémoire partagée. Actuellement, l'outil Recovery Expert ne prend pas en charge l'utilisation d'un alias DB2 défini avec un bouclage pour éviter l'incident lié à la mémoire partagée.
Solution
# Ajout local permettant de résoudre les incidents liés à la mémoire partagée AIX : EXTSHM=ON export EXTSHM
db2set DB2ENVLIST=EXTSHM
Ceci permet de définir au sein de chaque instance une variable de profil DB2 qui permet d'inclure la valeur de l'environnement EXTSHM dans l'environnement des processus de démon DB2 lorsqu'ils démarrent. Le fait de définir la valeur EXTSHM dans les profils db2 de chaque instance, exécutés lors de la connexion, permet de faire en sorte que la variable soit définie dans n'importe quel environnement de propriétaire d'instance. Enfin, le fait de la placer dans /etc/rc.db2 permet de faire en sorte que la variable soit définie lorsque les processus DB2 sont démarrés au moment du démarrage. Redémarrez le système pour vous assurer que tous les processus DB2 sont démarrés avec la valeur EXTSHM=ON dans leur environnement.
if [ -x $INSTHOME/sqllib/adm/db2set ] then if [ "`$INSTHOME/sqllib/adm/db2set DB2ENVLIST`" != "EXTSHM" ] then $INSTHOME/sqllib/adm/db2set DB2ENVLIST=EXTSHM fi fiAvec ce code, la variable de profil d'instance DB2ENVLIST est définie la première fois que la nouvelle instance est utilisée.
EXTSHM=ON export EXTSHM