Zwiększanie segmentów pamięci współużytkowanej

Podczas próby przetworzenia zdarzenia przez program WebSphere Business Monitor na platformie AIX zwracany jest błąd SQL. Jest on również zwracany, gdy inicjowanie połączenia bazy danych przez produkt WebSphere zakończy się niepowodzeniem podczas uruchamiania lub przetwarzania zdarzeń. Błąd jest wynikiem narzuconego przez system operacyjny limitu liczby segmentów pamięci współużytkowanej dostępnej dla produktu IBM DB2.

Jeśli wykonanie operacji Testuj połączenie z Konsoli administracyjnej produktu WebSphere (zasoby jdbc) zakończy się niepowodzeniem z następującym błędem:
Połączenie testowe dla źródła danych
MonitorDataSource na serwerze serwer1 w węźle Node01 nie powiodło się. Zgłoszono następujący wyjątek:: 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.
Ten błąd prawdopodobnie oznacza, że liczba segmentów pamięci współużytkowanej dozwolona na platformie AIX dla bazy danych została przekroczona.

Gdy ten błąd wystąpi, należy zmienić konfigurację produktu DB2 w celu zwiększenia liczby segmentów pamięci współużytkowanej. Aktualnie narzędzie recovery expert nie obsługuje definiowania aliasu produktu DB2 z pętlą zwrotną w celu uniknięcia problemów związanych z pamięcią współużytkowaną.

Rozwiązanie

Funkcja rozszerzonej pamięci współużytkowanej jest używana przez produkt DB2 do obejścia tego problemu. Aby włączyć tę funkcję, należy umieścić poniższe wiersze blisko początków plików /etc/rc.db2 i <katalog_główny_instancji>/sqllib/db2profile (po komentarzu bloku, ale przed wszystkimi wierszami wykonywalnymi). Wpis <katalog_główny_instancji> oznacza katalog osobisty każdego użytkownika instancji (na przykład /home/db2inst1):
# Dodatek lokalny rozwiązujący problem związany z pamięcią współużytkowaną w systemie AIX:
EXTSHM=ON
export EXTSHM
Uwaga: We wpisie rozróżniana jest wielkość liter. Należy umieścić wpis w plikach db2profile wszystkich użytkowników instancji i administratora serwera. Następnie należy zalogować się kolejno jako poszczególni użytkownicy i administrator serwera oraz uruchomić następującą komendę:
db2set DB2ENVLIST=EXTSHM

Ustawi ona zmienną profilu produktu DB2 w poszczególnych instancjach, co spowoduje dołączenie wartości zmiennej środowiskowej EXTSHM do środowiska procesów demona produktu DB2 po uruchomieniu tych instancji. Zdefiniowanie zmiennej EXTSHM w plikach db2profile poszczególnych instancji (uruchamianych podczas logowania) zapewni ustawienie tej zmiennej w środowisku dowolnego właściciela instancji. Ponadto umieszczenie tej zmiennej w pliku /etc/rc.db2 zapewni, że zmienna będzie ustawiana podczas uruchamiania procesów produktu DB2 w momencie uruchomienia. Na końcu należy zrestartować system, aby wszystkie procesy produktu DB2 zostały uruchomione ze zmienną EXTSHM=ON w swoich środowiskach.

Aby w przyszłości poprawka była automatycznie stosowana w nowych instancjach podczas ich tworzenia, należy dodać wiersze ustawiające i eksportujące zmienną EXTSHM do pliku /usr/lpp/db2_08_02/cfg/db2profile, który zostanie skopiowany do katalogu <katalog_główny_instancji>/sqllib/db2profile podczas tworzenia instancji. Aby sprawdzić, czy zmienna profilu DB2ENVLIST została również ustawiona, należy dodać ten kod po ustawieniu zmiennej INSTHOME:
if [ -x $INSTHOME/sqllib/adm/db2set ]
then if [ "`$INSTHOME/sqllib/adm/db2set DB2ENVLIST`" != "EXTSHM" ]
then $INSTHOME/sqllib/adm/db2set DB2ENVLIST=EXTSHM
fi fi
Ten kod spowoduje ustawienie zmiennej profilu instancji DB2ENVLIST podczas pierwszego użycia nowej instancji.
Uwaga:
  • Przyjęto, że produkt DB2 w wersji 8.0 został zainstalowany w katalogu /usr/lpp/db2_08_02. Jeśli instalacja znajduje się w innym miejscu, należy używać tego miejsca instalacji.
  • Dla produktu DB2 8.0 należy dodać następujące wiersze do pliku <katalog_główny_instancji>/sqllib/userprofile (o ile ten plik istnieje). W przeciwnym razie należy utworzyć plik profilu użytkownika z uprawnieniami 755. Linie to:
    EXTSHM=ON
    export EXTSHM

Copyright IBM Corporation 2005, 2006. All Rights Reserved.