A megosztott memóriaszegmensek számának növelése

Amikor a WebSphere Business Monitor megkísérel feldolgozni egy eseményt AIX környezetben, SQL hibaüzenet érkezik. Ugyanez a helyzet, amikor a WebSphere nem tudja inicializálni az adatbázis-kapcsolatot akár indításkor, akár eseményfeldolgozáskor. A hibát az operációs rendszer korlátozása okozza, amely meghatározza az IBM DB2 számára rendelkezésre álló megosztott memóriaszegmensek számát.

Akkor, amikor a Próbaösszeköttetés a WebSphere adminisztrációs kezelőpultjáról(jdbc erőforrások) sikertelen a következő hibaüzenettel:
Tesztkapcsolat
sikertelen a MonitorDataSource adatforrásnál a server1 kiszolgálón a Node01
csomóponton a következő kivétellel: java.lang.Exception: java.sql.SQLException:
SQL1224N Egy adatbázisügynök nem indítható el egy kérelem kiszolgálásához, illetve egy
adatbázisrendszer leállása vagy egy force parancs miatt befejeződött. SQLSTATE=55032
DSRA0010E: SQL állapot = 55032, Hibakód = -1,224.
Az ilyen hiba vélhetőleg azt jelzi, hogy az adatbázis túllépte az AIX rendszer által engedélyezett megosztott memóriaszegmensek számát.

Ha ez a hiba fordul elő, módosítani kell a DB2 konfigurációját, és növelni kell a megosztott memóriaszegmensek számát. Jelenleg a megosztott memória problémájának elkerülésére a helyreállítási szakértő nem támogatja egy DB2 másodlagos név megadását visszacsatolással.

Megoldás

A DB2 a kiterjesztett megosztott memória szolgáltatással kerüli meg a problémát. A szolgáltatás engedélyezéséhez helyezze el a következő sorokat az /etc/rc.db2 és a <példány_kezdőkönyvtára>/sqllib/db2profile fájlba (ahol a <példány_kezdőkönyvtára> az egyes példányfelhasználók kezdőkönyvtára, például /home/db2inst1) a megjegyzésblokk után de a végrehajtható sorok elé:
#
Helyi megoldás az AIX megosztott memória problémájára:
EXTSHM=ON
export EXTSHM
Megjegyzés: A bejegyzésekben fontos a kis- és a nagybetűk megkülönböztetése. A bejegyzéseket az összes példányfelhasználóhoz és a rendszergazdai kiszolgálófelhasználóhoz tartozó db2profile fájlba be kell írni. Ezután jelentkezzen be az egyes fenti felhasználók nevével, és hajtsa végre a következő parancsot:
db2set DB2ENVLIST=EXTSHM

Ez az egyes példányokon belül beállít egy DB2 profilváltozót, amely a DB2 démonfolyamatok környezetébe ezek indításakor felveszi EXTSHM környezeti változó értékét. Az egyes példányokhoz tartozó, a bejelentkezéskor végrehajtásra kerülő db2profile fájlban az EXTSHM megadása biztosítja a változó beállítását valamennyi példánytulajdonos környezetében. Az /etc/rc.db2 fájlba való beírás a változó beállítását biztosítja a DB2 folyamatok indításakor. Végül indítsa újra a rendszert, hogy az összes DB2 folyamat az EXTSHM=ON beállítással induljon a környezetében.

Ha a javítást automatikusan alkalmazni kívánja a jövőbeli új példányokra, vegye fel az EXTSHM változót beállító és exportáló sorokat az /usr/lpp/db2_08_02/cfg/db2profile fájlba, amelyet példány létrehozásakor a <példány_kezdőkönyvtára>/sqllib/db2profile fájlba másol a rendszer. A DB2ENVLIST profilváltozó beállításához írja be a következő kódot az INSTHOME változó beállítása után:
if [ -x $INSTHOME/sqllib/adm/db2set ]
then if [ "`$INSTHOME/sqllib/adm/db2set DB2ENVLIST`" != "EXTSHM" ]
then $INSTHOME/sqllib/adm/db2set DB2ENVLIST=EXTSHM
fi
fi
Ez a kód a DB2ENVLIST profilváltozó beállítását biztosítja az új példány első használatakor.
Megjegyzés:
  • A feltételezés szerint DB2 8.0-s változata az /usr/lpp/db2_08_02 könyvtárba van telepítve. Ha az adott telepítés máshová történt, a megfelelő telepítési hellyel kell dolgoznia.
  • A DB2 8.0-s változatánál a következő sorokat fel kell vennie a <példány_kezdőkönyvtára>/sqllib/userprofile fájlba, ha az létezik; ellenkező esetben hozzon létre egy felhasználói profilfájt 755-ös engedélyekkel. A sorok a következők:
    EXTSHM=ON
    export EXTSHM

Copyright IBM Corporation 2005. Minden jog fenntartva.