Przeskocz do opisu głównego

DB2 nie nasłuchuje na porcie 50000?

· 3 minut czytania
Sławomir Cichy
Backend Engineer @ Sci Software

DB2 nie nasłuchuje na porcie 50000? Sprawdź to, zanim zaczniesz zmieniać konfigurację

Po instalacji DB2 często zdarza się, że instancja nie nasłuchuje na domyślnym porcie TCP/IP (50000). To prowadzi do problemów z połączeniami zdalnymi i uwierzytelnianiem. Zanim jednak zaczniesz zmieniać konfigurację, musisz zrozumieć, dlaczego tak się dzieje. Często problemem nie jest brak konfiguracji, ale jej nieoczekiwana wartość.

Sprawdź, na jakim porcie DB2 faktycznie nasłuchuje​

Domyślny port to jedno, ale rzeczywista konfiguracja to drugie. Twoja instancja DB2 mogła zostać skonfigurowana do używania niestandardowego portu podczas instalacji.

Użyj poniższych poleceń, aby zdiagnozować problem.

Krok 1: Sprawdź protokół komunikacji​

Najpierw upewnij się, że DB2 w ogóle ma włączoną komunikację przez TCP/IP.

db2set DB2COMM

Jeśli w odpowiedzi otrzymasz TCPIP, oznacza to, że protokół jest aktywny. Jeśli nie, ustaw go: db2set DB2COMM=TCPIP.

Krok 2: Sprawdź nazwę usługi​

Teraz musisz sprawdzić, jaki port lub nazwę usługi DB2 ma przypisane do nasłuchiwania.

db2 get dbm cfg | grep SVCENAME

W idealnej sytuacji wynik to (SVCENAME) = 50000. Często jednak zobaczysz tam nazwę usługi, np. (SVCENAME) = db2c_db2inst1. To oznacza, że port nie jest zdefiniowany numerycznie, a za pomocą nazwy.

Krok 3: Weryfikacja portu w systemie operacyjnym​

Jeśli db2 get dbm cfg zwróciło nazwę usługi, musisz sprawdzić, z jakim portem jest ona powiązana w systemie. Plik /etc/services zawiera mapowania nazw usług na numery portów.

cat /etc/services | grep db2c_db2inst1

W tym miejscu możesz odkryć, że DB2 nasłuchuje na zupełnie innym porcie, np. db2c_db2inst1 25010/tcp. To jest klucz do rozwiązania Twojego problemu: DB2 nie nasłuchiwał na 50000, bo był skonfigurowany do nasłuchiwania na 25010.

Rozwiązanie: Dostosuj konfigurację do swoich potrzeb​

Teraz, gdy wiesz, na jakim porcie DB2 nasłuchuje (lub powinien), masz dwie opcje:

  1. Używaj zdefiniowanego portu (25010): Jeśli niestandardowy port Ci nie przeszkadza, po prostu poinstruuj swoje aplikacje, aby łączyły się na port 25010 zamiast 50000.
  2. Zmień port na domyślny (50000): Jeśli wolisz używać standardowego portu 50000, zaktualizuj konfigurację DB2.

Zmiana portu na domyślny 50000​

Jest to prosta i szybka operacja.

# Zatrzymaj instancję
db2stop

# Zaktualizuj port nasłuchiwania
db2 update dbm cfg using SVCENAME 50000

# Uruchom instancję ponownie
db2start

# Sprawdź, czy nasłuchuje na porcie 50000
netstat -lnptu | grep 50000

Jeśli wszystko poszło zgodnie z planem, w wyniku netstat powinieneś zobaczyć proces db2sysc nasłuchujący na porcie 50000. Pamiętaj też o otwarciu tego portu w zaporze sieciowej!


Podsumowanie: Zanim zaczniesz zmieniać konfigurację, zawsze najpierw zdiagnozuj istniejący stan. Często rozwiązanie problemu leży w zrozumieniu, dlaczego system zachowuje się tak, a nie inaczej. W tym przypadku DB2 nie był zepsuty – po prostu nasłuchiwał na innym porcie.