Podręcznik użytkownika

Najczęstsze problemy z DB2 Connect

W tej części przedstawiono najczęstsze problemy z połączeniami podczas używania DB2 Connect. W każdym przypadku użytkownik ma do dyspozycji:

Uwagi:

  1. Aktualne informacje o zalecanych poziomach poprawek można znaleźć w podręczniku Quick Beginnings (Krótkie wprowadzenie) dla używanego produktu oraz najnowsze Release Notes (Uwagi do wydania).

  2. Dla kombinacji kodu komunikatu i kodu powrotu specyficznych dla komunikacji APPC można również podać kod znaczenia SNA. Dotychczas kod znaczenia SNA związany z komunikatem należało pobierać z podsystemu SNA.

    Czasami kody znaczenia SNA są umieszczane w protokołach systemowych. Zależy to jednak od używanego podsystemu SNA. Czasami, aby uzyskać kody znaczenia, należy najpierw uaktywnić śledzenie SNA, a następnie powtórzyć problem.

  3. Termin brama odnosi się do produktu DB2 Connect Enterprise Edition.

SQL0965 lub SQL0969

Opis problemu

Komunikaty SQL0965 i SQL0969 mogą pojawiać się z wieloma różnymi kodami powrotu z DB2 Universal Database for AS/400, DB2 Universal Database for OS/390, DB2 for MVS/ESA i DB2 for VM &VSE.

Jeśli pojawi się taki komunikat, należy odnaleźć oryginalny kod SQL w dokumentacji dla serwera baz danych wydającego komunikat.

Rozwiązanie

Kod SQL odebrany od bazy danych hosta nie może być tłumaczony. Należy poprawić błąd w oparciu o kod błędu, a następnie wprowadzić ponownie komendę, której wykonanie nie powiodło się.

SQL1338 podczas wykonywania CONNECT

Opis problemu / przyczyna

Nie zdefiniowano symbolicznej nazwy docelowej lub zdefiniowano ją nieprawidłowo.

Sytuacja taka może mieć miejsce, gdy używany jest węzeł APPC, a symboliczna nazwa docelowa podana w katalogu węzłów DB2 nie odpowiada pozycji CPI-C w konfiguracji lokalnego podsystemu komunikacyjnego APPC.

Inną przyczyną może być zainstalowanie więcej niż jednego stosu SNA w używanej maszynie. Pożyteczne może okazać się sprawdzenie PATH i LIBPATH, co pozwoli zapewnić, że najpierw wystąpi odwołanie do stosu, który ma być używany.

Rozwiązanie

  1. Należy sprawdzić, czy nazwa profilu informacji ubocznych interfejsu CPIC podana w katalogu węzłów DB2 odpowiada konfiguracji SNA (uwzględnia rozróżnianie wielkich i małych liter).
  2. Konieczne może być sprawdzenie PATH i LIBPATH, co pozwoli zapewnić, że najpierw wystąpi odwołanie do stosu SNA, który ma być używany.

SQL1403N podczas wykonywania CONNECT

Opis problemu

SQL1403N Nazwa użytkownika lub hasło jest niepoprawne.

Rozwiązanie

  1. Użytkownik nie został zidentyfikowany na stacji roboczej DB2 Connect. Należy określić, czy użytkownik może być zidentyfikowany na stacji roboczej DB2 Connect.

    Jeśli tak, należy sprawdzić, czy podano prawidłowe hasło w instrukcji CONNECT, jeśli jest to konieczne.

    Jeśli nie, pozycja systemowego katalogu baz danych musiała zostać niepoprawnie wpisana przy użyciu AUTHENTICATION SERVER (wartość domyślna, jeśli jawnie nie podano AUTHENTICATION). Jeśli miało to miejsce, należy ponownie umieścić pozycję w katalogu przy użyciu AUTHENTICATION DCS lub CLIENT.

  2. Hasło niedostępne do wysłania do bazy danych serwera docelowego. Jeśli pozycja systemowego katalogu baz danych została wpisana przy użyciu AUTHENTICATION DCS, to hasło musi być przesłane od klienta DB2 do bazy danych serwera docelowego. Na niektórych platformach, na przykład AIX, hasło można otrzymać jedynie wtedy, gdy jest ono udostępniane w instrukcji CONNECT.

SQL5043N

Opis problemu

Obsługa jednego lub większej liczby protokołów komunikacyjnych nie uruchomiła się pomyślnie. Jednak podstawowe funkcje menedżera baz danych uruchomiły się pomyślnie.

Być może protokół TCP/IP nie został uruchomiony na bramie DB2 Connect albo poprzednio wystąpiło pomyślne połączenie klienta.

Jeśli diaglevel = 4, to db2diag.log może zawierać pozycje podobne do podanej poniżej.

   1997-05-30-14.09.55.321092   Instance:svtdbm5   Node:000
PID:10296(db2tcpcm)   Appid:none
common_communication  sqlcctcpconnmgr_child   Probe:46
DIA3205E Socket address "30090" configured in the TCP/IP
services file and
required by the TCP/IP server support is being used by another
process.

Rozwiązanie

Ostrzeżenie sygnalizuje, że produkt DB2 Connect działający jako brama dla zdalnych klientów ma trudności z obsługiwaniem jednego lub większej liczby protokołów komunikacyjnych klienta. Mogą to być protokoły TCP/IP, APPC lub inne. Komunikat ten zazwyczaj oznacza, że jeden z protokołów komunikacyjnych zdefiniowanych dla DB2 Connect nie jest poprawnie zdefiniowany.

Często przyczyną może być niezdefiniowana lub zdefiniowana niepoprawnie zmienna profilu DB2COMM. Ogólnie problem stanowi niezgodność między zmienną DB2COMM a nazwami zdefiniowanymi w konfiguracji menedżera baz danych (na przykład svcename, nname lub tpname).

Możliwym scenariuszem jest wykorzystanie połączenia poprzednio zakończonego pomyślnie, a następnie pobranie komunikatu o błędzie SQL5043, gdy żadna konfiguracja nie zmieniła się. Taka sytuacja może mieć miejsce przy użyciu protokołu TCP/IP, gdy zdalny system z jakiegoś powodu niepoprawnie zakończył połączenie. Gdy to się stanie, połączenie może nadal istnieć po stronie klienta i być może będzie możliwe przywrócenie połączenia po uruchomieniu komend wymienionych poniżej.

Bardziej prawdopodobne jest, że jeden z klientów łączących się z bramą nadal ma uchwyt na porcie TCP/IP. Na każdej maszynie klienta połączonej z bramą należy wykonać komendy:

  1. db2 terminate,
  2. db2stop.

SQL30020

Opis problemu

SQL30020N Uruchomienie nie powiodło się z powodu błędu protokołu dystrybucyjnego, który będzie miał wpływ na poprawne uruchomienie kolejnych komend lub instrukcji SQL.

Rozwiązanie

Po wystąpieniu tego błędu należy skontaktować się z serwisem.

Należy sprawdzić ffdc dump (pid.000) w katalogu db2dump. Następnie należy sformatować plik zrzutu za pomocą db2fdump i poszukać w pliku wynikowym słowa "ERROR". Może się tu znajdować MVS ABEND. Jeśli to się zdarzy, należy poszukać dalszych informacji na konsoli MVS i znaleźć kod zakończenia w podręczniku DB2 for MVS Messages and Codes.

SQL30060

Opis problemu

SQL30060N "<ID-autoryzowanego użytkownika>" nie ma uprawnienia do przeprowadzenia operacji "<operacja>".

Rozwiązanie

Podczas połączenia z DB2 for MVS lub DB2 for OS/390 tabele komunikacyjne baz danych nie zostały poprawnie zaktualizowane. Skorzystaj z podręczników:

SQL30061

Opis problemu

Połączenie z nieprawidłowym miejscem serwera baz danych hosta lub AS/400 - nie można znaleźć docelowej bazy danych.

Rozwiązanie

Być może w pozycji katalogu DCS podano nieprawidłową nazwę bazy danych serwera. W takiej sytuacji do aplikacji zwracany jest kod SQLCODE -30061.

Należy sprawdzić węzeł DB2, bazę danych i pozycje katalogu DCS. Nazwa docelowej bazy danych w pozycji katalogu DCS musi odpowiadać nazwie bazy danych w zależności od platformy. W przypadku bazy danych DB2 Universal Database for OS/390 używana nazwa powinna być taka sama, jak w polu "LOCATION=nazwa_położenia" zbioru danych programu ładowania początkowego (BSDS). Jest ona także podawana w komunikacie DSNL004I (LOCATION=położenie) przy uruchamianiu Distributed Data Facility (DDF). Patrz także sekcja Opis pojęcia baza danych i rozdział Aktualizowanie katalogów baz danych.

W podręczniku DB2 Connect Quick Beginnings (Krótkie wprowadzenie) można znaleźć również przykłady, jak zaktualizować katalog DB2. Patrz sekcja "Update the DB2 Directories" ("Aktualizacja katalogów DB2") znajdujący się w każdym rozdziale opisującym konfigurowanie SNA lub przeczytaj sekcje "Configuring Host and AS/400 Databases for DB2 Connect" ("Konfigurowanie baz danych hosta i AS/400 dla DB2 Connect") i "Configuring the TCP/IP Connection" ("Konfigurowanie połączenia TCP/IP").

Poprawnymi komendami dla węzła APPC lub APPN są:

   db2 catalog appc node <nazwa_węzła> remote <sym_nazw_doc> security program
   db2 catalog dcs database <nazwa_lokalna> as <rzecz_nazwa_bazy_danych>
   db2 catalog database <nazwa_lokalna> as <alias> at node <nazwa_węzła> 
                authentication dcs

Poprawnymi komendami dla węzła TCP/IP są:

   db2 catalog tcpip node <nazwa_węzła> remote <nazwa_lub_adres_hosta>
                server <numer_portu_lub_nazwa_usługi>
   db2 catalog dcs database <nazwa_lokalna> as <rzecz_nazwa_bazy_danych> 
   db2 catalog database <nazwa_lokalna> as <alias> at node <nazwa_węzła>
                authentication dcs

Następnie, aby połączyć się z bazą danych, należy wpisać:

   db2 connect to <alias> user <nazwa_użytkownika> using <hasło>

SQL30073 z kodem powrotu 119C podczas wykonywania CONNECT

Opis problemu

Komunikat SQL30073 jest wydawany z kodem powrotu 119C. Komunikat pojawia się, gdy baza danych serwera docelowego nie obsługuje strony kodowej używanej przez klienta DB2 (za pośrednictwem DB2 Connect). Strona kodowa jest uzyskiwana z konfiguracji środowiska operacyjnego, w którym jest uruchomiony klient DB2.

Więcej informacji można znaleźć w podręczniku Administration Guide.

Rozwiązanie

Problem ten można rozwiązać, instalując poprawkę w systemie baz danych serwera docelowego. Poprawki zalecane w tej sytuacji można uzyskać w serwisie odpowiedniego produktu.

Jako tymczasowe rozwiązanie użytkownik może zastosować przesłonięcie domyślnej strony kodowej, ustawiając zmienną środowiskową. Należy sprawdzić ustawienia narodowe lub ustawić DB2CODEPAGE=850.

Na platformach typu UNIX użytkownik może spróbować zmienić stronę kodową, zmieniając wartość zmiennej środowiskowej LANG.

SQL30081N z kodem powrotu 1

Opis problemu

Wyświetlany jest następujący komunikat z kodem znaczenia SNA:

    db2 connect to <nazwa_bazy_danych> user <id_użytkownika>
   Podaj hasło dla <id_użytkownika>:
   SQL30081N  Wykryto błąd komunikacyjny.
   Używany protokół komunikacyjny: "APPC".
   Używany zestaw komunikacyjnych funkcji API: "CPI-C".
   Miejsce gdzie
   został wykryty błąd: "". Funkcja komunikacyjna wykryła
   błąd:
  "cmallc". Kod(y) błędów właściwe dla protokołu: "1", "*",
  "0x10030021".
   SQLSTATE=08001

Rozwiązanie

W podanym przykładzie kod znaczenia jest równy 10030021.

Poniżej podano najczęściej występujące kody znaczenia związane z tym komunikatem o błędzie i sugerowane rozwiązania dla każdego przypadku:

  1. SQL30081N z kodem powrotu 1 i kodem znaczenia SNA 0877002C
    

    Podano nieprawidłową nazwę sieciową.

  2. SQL30081N z kodem powrotu 1 i kodem znaczenia SNA ffff0003
    

    Podano nieprawidłowy adres MAC lub połączenie SNA nie jest aktywne.

  3. SQL30081N z kodem powrotu 1 i kodem znaczenia SNA 10030021
    

    Błędny typ jednostki logicznej.

  4. SQL30081N z kodem powrotu 1 i kodem znaczenia SNA 084B6031
    

    Parametr MAXDBAT w DSNZPARM (na hoście DB2 for MVS lub DB2 for OS/390) jest ustawiony na 0.

Inne sugestie:

  1. Podczas tworzenia profilu lokalnej jednostki logicznej (LU) należy zdefiniować jednostkę logiczną jako domyślną. Na przykład na panelu opcji SNA w CM/2 należy wykonać jedno z opisanych działań:
  2. Należy sprawdzić, czy uruchomiono SNA na bramie DB2 Connect.
  3. Jeśli używany jest produkt DB2 for MVS lub DB2 for OS/390, należy sprawdzić, czy została uruchomiona przestrzeń adresowa Distributed Data Facility (DDF) i czy DB2 pracuje.

SQL30081N z kodem powrotu 2

Opis problemu

Komunikat SQL30081N jest odbierany z kodem powrotu 2 i kodem znaczenia 08120022.

Rozwiązanie

Parametr NUMILU na NCP (koniec połączenia znajdujący się na hoście) może być ustawiony na wartość domyślną (0). Należy to sprawdzić. Następnie zmodyfikować definicję NCP, jeśli to konieczne przed ponowną próbą, po wprowadzeniu zmian.

SQL30081N z kodem powrotu 9

Opis problemu

Wyświetlany jest następujący komunikat (w tym przypadku nie jest wymagany kod znaczenia SNA):

   db2 connect to <baza_danych> user <id_użytkownika>
   SQL30081N  Wykryto błąd komunikacyjny.
   Używany protokół komunikacyjny: "APPC".
   Używany zestaw komunikacyjnych funkcji API: "CPI-C".
   Miejsce gdzie
   został wykryty błąd: "". Funkcja komunikacyjna wykryła
   błąd:
   "cmsend". Kod(y) błędów właściwe dla protokołów: "9", "*",
   "0x10086021".
   SQLSTATE=08001

Rozwiązanie

Problem polega na tym, że w systemie DB2 Connect nie zdefiniowano poprawnie nazwy programu transakcyjnego (TPNAME). Na przykład użytkownik mógł zaktualizować konfigurację SNA, ale jeszcze nie zweryfikował jej na bramie DB2 Connect. Dodatkowe informacje można znaleźć w podręcznikach DB2 Connect Enterprise Edition for OS/2 and Windows Quick Beginnings i DB2 Connect Personal Edition Krótkie wprowadzenie.

SQL30081N z kodem powrotu 10

Opis problemu

Wyświetlany jest następujący komunikat (nie jest wymagany kod znaczenia SNA):

   SQL30081N  Wykryto błąd komunikacyjny.
   Używany protokół komunikacyjny: "APPC".
   Używany zestaw komunikacyjnych funkcji API: "CPI-C".
   Miejsce gdzie
   został wykryty błąd: "". Funkcja komunikacyjna wykryła
   błąd:
   "cmrcv". Kod(y) błędów właściwe dla protokołu: "10", "*", "*".
   SQLSTATE=08001

Rozwiązanie

Należy sprawdzić, czy produkt DB2 jest poprawnie zainstalowany.

Jeśli używana jest brama DB2 Connect for OS/2, może zostać wyświetlony następujący tekst, jeśli nazwa TP nie jest poprawnie zdefiniowana:

   Kody błędów właściwe dla protokołu: "10", "*", "0x084C0000".
   SQLSTATE=08001

W tym przypadku, na przykład w CM/2 definicja powinna wyglądać następująco:

   Transaction program name        = 'tpname'    (definiowana przez użytkownika)
   OS/2 program path and file name = notused

i (na następnym ekranie konfiguracyjnym CM/2)

   Presentation type - background
   Operation type - Queued, operator preloaded

SQL30081N z kodem powrotu 20

Opis problemu

   SQL30081N  Wykryto błąd komunikacyjny.
   Używany protokół komunikacyjny: "APPC".
   Używany zestaw komunikacyjnych funkcji API: "CPI-C".
   Miejsce gdzie
   został wykryty błąd: "". Funkcja komunikacyjna wykryła
   błąd:
   "xcstp". Kody błędów właściwe dla protokołów: "20", "*", "*".
   SQLSTATE=08001

Rozwiązanie

Należy sprawdzić, czy uruchomiono podsystem SNA w systemie DB2 Connect.

SQL30081N z kodem powrotu 27

Opis problemu

Komunikat SQL30081N jest odbierany z kodem powrotu 27 i kodem znaczenia SNA 800Axxxx.

Rozwiązanie

Jednostka informacyjna ścieżki (PIU) VTAM jest za duża.

SQL30081N z kodem powrotu 79

Opis problemu

   SQL30081N  Wykryto błąd komunikacyjny.
   Używany protokół komunikacyjny: "TCP/IP".
   Używany zestaw komunikacyjnych funkcji API: "SOCKETS".
   Miejsce
   gdzie został wykryty błąd: "". Funkcja komunikacyjna
   wykryła błąd:
   "connect". Kod(y) błędów właściwe dla protokołów: "79", "*", "*".
   SQLSTATE=08001

Rozwiązanie

Ten błąd może wystąpić, gdy zdalny klient nie zdoła połączyć się z bramą DB2 Connect. Może on również wystąpić, gdy brama DB2 Connect łączy się z hostem.

  1. Zmienna profilu DB2COMM może być niepoprawnie ustawiona na bramie DB2 Connect. Należy to sprawdzić. Na przykład komenda db2set db2comm=tcpip powinna pojawić się w sqllib/db2profile, gdy w systemie AIX uruchamiany jest produkt DB2 Extended Enterprise Edition.
  2. Może istnieć niezgodność między nazwą usługi TCP/IP i/lub specyfikacjami numerów portów na kliencie DB2 i bramie DB2 Connect. Należy sprawdzić pozycje w plikach TCP/IP Services na obydwu maszynach.
  3. Należy sprawdzić, czy uruchomiono DB2 na bramie DB2 Connect. Należy ustawić na wartość 4 parametr poziomu diaglevel konfiguracji menedżera baz danych za pomocą komendy:
    db2 update dbm cfg using diaglevel 4
    
    Po zatrzymaniu i ponownym uruchomieniu DB2 należy sprawdzić w pliku db2diag.log, czy uruchomiono komunikację DB2 TCP/IP. Powinien zostać wyświetlony tekst podobny do podanego poniżej:
       1998-02-03-12.41.04.861119   Instance:svtdbm2   Node:00
       PID:86496(db2sysc)   Appid:none
       common_communication  sqlcctcp_start_listen   Probe:80
       DIA3000I Uruchomienie obsługi protokołu "TCPIP" nie powiodło się.
    

SQL30081N z kodem błędu 10032 zależnym od protokołu

Opis problemu

   SQL30081N  Wykryto błąd komunikacyjny.
   Używany protokół komunikacyjny: "TCP/IP".
   Używany zestaw komunikacyjnych funkcji API: "SOCKETS".
   Miejsce
   gdzie został wykryty błąd : "9.21.85.159". Komunikacyjna
   funkcja wykryła
   błąd: "send". Kod(y) błędów właściwe dla protokołu: "10032",
   "*", "*".
   SQLSTATE=08001

Rozwiązanie

Ten błąd pojawia się, gdy zachodzi próba odłączenia się od maszyny, na której komunikacja TCP/IP załamała się. Należy rozwiązać problem z podsystemem TCP/IP.

Na większości maszyn ponowne uruchomienie protokołu TCP/IP rozwiązuje problem. Niekiedy może być konieczne wyłączenie i włączenie maszyny.


[ Początek strony | Poprzednia strona | Następna strona | Spis treści | Indeks ]