Gemeinsam genutzte Speichersegmente erhöhen

Wenn WebSphere® Business Monitor versucht, auf der AIX®-Plattform ein Ereignis zu verarbeiten, wird ein SQL-Fehler zurückgegeben. Dies geschieht auch, wenn WebSphere während des Starts oder der Ereignisverarbeitung keine Datenbankverbindung herstellen kann. Die Anzahl gemeinsam genutzter Speichersegmente, die für IBM® DB2® verfügbar sind, wird durch das Betriebssystem begrenzt, wodurch dieser Fehler auftritt.

Eine Testverbindung von der WebSphere-Administrationskonsole (JDBC-Ressourcen) kann mit dem folgenden Fehler fehlschlagen:
Test connection failed for data source MonitorDataSource on server server1 at
node Node01 with the following exception: 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.
Dieser Fehler deutet mit großer Wahrscheinlichkeit daraufhin, dass die Anzahl gemeinsam genutzter Speichersegmente, die von AIX für die Datenbank zugelassen wird, überschritten wurde.

Wenn dieser Fehler auftritt, müssen Sie die DB2-Konfiguration so ändern, dass die Anzahl gemeinsam genutzter Speichersegmente erhöht wird. Der Wiederherstellungsexperte unterstützt derzeit nicht die Definition eines DB2-Aliasnamens mit einer Rückschleife, um das Problem mit gemeinsam genutztem Speicher zu vermeiden.

Lösung

DB2 verwendet eine erweiterte Funktion für gemeinsam genutzten Speicher, die diesen Fehler umgeht. Zum Aktivieren dieser Funktion platzieren Sie die folgenden Zeilen nahe am Anfang von /etc/rc.db2 und <ausgangsverzeichnis_der_instanz>/sqllib/db2profile, (dabei ist <ausgangsverzeichnis_der_instanz> das Ausgangsverzeichnis jedes Instanzbenutzers, z. B. /home/db2inst1) nach dem Blockkommentar, jedoch vor beliebigen ausführbaren Zeilen:
# Local addition to fix AIX shared memory problem:
EXTSHM=ON
export EXTSHM
Note: Bei dem Eintrag muss die Groß-/Kleinschreibung beachtet werden. Platzieren Sie den Eintrag in der Datei db2profile von allen Instanzbenutzern und dem Administratorserverbenutzer. Melden Sie sich anschließend als jeder Instanzbenutzer und der Administratorserverbenutzer an, und führen Sie den folgenden Befehl aus:
db2set DB2ENVLIST=EXTSHM

Dies setzt eine DB2-Profilvariable in jeder Instanz, dadurch wird der Wert der Umgebungsvariable EXTSHM in der Umgebung der DB2-Dämonprozesse eingeschlossen, wenn diese gestartet werden. Die Definition von EXTSHM in der Datei db2profile von jeder Instanz, die bei der Anmeldung ausgeführt wird, stellt sicher, dass die Variable in jeder Umgebung des Instanzeigners gesetzt wird. Schließlich wird durch das Einschließen der Zeilen in /etc/rc.db2 sichergestellt, dass die Variable gesetzt ist, wenn die DB2-Prozesse bei der Startzeit gestartet werden. Starten Sie abschließend das System erneut, um sicherzustellen, dass alle DB2-Prozesse mit EXTSHM=ON in ihrer Umgebung gestartet werden.

Wenn Sie wollen, dass die Korrektur zukünftig automatisch auf neue Instanzen bei ihrer Erstellung angewendet wird, fügen Sie die Zeilen, die EXTSHM setzen und exportieren, der Datei /usr/lpp/db2_08_02/cfg/db2profile hinzu, die bei Instanzerstellung in <ausgangsverzeichnis_der_instanz>/sqllib/db2profile kopiert wird. Fügen Sie diesen Code nach dem Setzen der Variable INSTHOME hinzu, um sicherzustellen, dass die Profilvariable DB2ENVLIST ebenfalls gesetzt wird:
if [ -x $INSTHOME/sqllib/adm/db2set ]
then if [ "`$INSTHOME/sqllib/adm/db2set DB2ENVLIST`" != "EXTSHM" ]
then $INSTHOME/sqllib/adm/db2set DB2ENVLIST=EXTSHM
fi
fi
Dieser Code bewirkt, dass die Instanzprofilvariable DB2ENVLIST gesetzt wird, wenn eine neue Instanz zum ersten Mal verwendet wird.
Note:
  • Es wird davon ausgegangen, dass DB2 Version 8.0 unter /usr/lpp/db2_08_02 installiert wurde. Wenn sich Ihre Installation an einer anderen Position befindet, müssen Sie Ihren Installationspfad verwenden.
  • Für DB2 Version 8.0 müssen Sie die folgenden Zeilen zur Datei <ausgangsverzeichnis_der_instanz>/sqllib/userprofile hinzufügen, sofern diese vorhanden ist. Erstellen Sie anderfalls eine Benutzerprofildatei mit den Zugriffsberechtigungen 755. Die Zeilen lauten wie folgt:
    EXTSHM=ON
    export EXTSHM

Copyright IBM Corporation 2005, 2006. Alle Rechte vorbehalten.