Дополнение по возможностям соединений

Часто встречающиеся ошибки при работе с DB2 Connect

В этом разделе перечислены характерные признаки ошибок соединения при использовании DB2 Connect. Для каждой ошибки приводится:

Примечания:

  1. Свежую информацию по рекомендуемым уровням исправления программ смотрите в руководстве Quick Beginnings для вашего программного продукта и в последнем выпуске Release Notes.

  2. Для комбинаций сообщения и кода возврата, свойственных разным типам связи APPC, может также указываться смысловой код SNA. На сегодня любую информацию о смысловом коде SNA, связанную с каким-то определенным сообщением, надо получать от подсистемы SNA.

    Иногда смысловые коды SNA можно найти в системных журналах. Эта возможность зависит от используемой подсистемы SNA, и в ряде случаев, чтобы получить информацию о смысловом коде, приходится повторно генерировать ошибку при включенной трассировке SNA.

  3. Термин шлюз относится к DB2 Connect Enterprise Edition.

SQL0965 или SQL0969

Признак

Сообщения SQL0965 и SQL0969 могут посылаться с множеством различных кодов возврата от DB2 Universal Database for AS/400, DB2 Universal Database for OS/390, DB2 for MVS/ESA и DB2 for VM & VSE.

Если вы получили одно из этих сообщений, надо найти исходный код SQL в документации по программному продукту сервера базы данных, который послал сообщение.

Решение

Код SQL, полученный от базы данных хоста, не поддается преобразованию. Исправьте ошибку, исходя из ее кода, и повторите невыполненную команду.

SQL1338 при выполнении оператора CONNECT

Признак / Причина

Символическое имя назначения не определено или определено неправильно.

Это может произойти, например, при использовании узла APPC, если символическое имя назначения, указанное в каталоге узла DB2, не соответствует записи CPI-C в конфигурации локальной подсистемы связи APPC.

Другая возможная причина - на вашем компьютере установлено несколько стеков SNA. Возможно, надо будет исправить PATH и LIBPATH, чтобы требуемый стек стоял первым.

Решения

  1. Убедитесь, что имя профиля информации о стороне взаимодействия CPIC, указанное в записи каталога узла DB2, соответствует конфигурации SNA (регистр символов учитывается).
  2. Возможно, надо исправить PATH и LIBPATH, чтобы требуемый стек SNA стоял первым.

SQL1403N при выполнении оператора CONNECT

Признак

SQL1403N Неправильные имя пользователя и/или пароль.

Решение

  1. Неудачная аутентификация пользователя на рабочей станции DB2 Connect. Посмотрите, предполагалась ли аутентификация пользователя на рабочей станции DB2 Connect.

    Если это так, убедитесь, что в операторе CONNECT пароль указан верно.

    В противном случае в записи в каталоге базы данных системы, очевидно, было ошибочно указано AUTHENTICATION SERVER (это значение используется по умолчанию, если параметр AUTHENTICATION не задан явно). В этом случае следует повторно занести запись в каталог с указанием AUTHENTICATION DCS или CLIENT.

  2. Отсутствует пароль для отсылки базе данных сервера назначения. Если в записи в каталоге базы данных системы указано AUTHENTICATION DCS, клиент DB2 должен посылать пароль базе данных сервера назначения. На некоторых платформах, например, на AIX, пароль можно использовать, только если он указан в операторе CONNECT.

SQL5043N

Признак

Не были успешно запущены системы поддержки одного или несколько протоколов связи. Тем не менее базовые функции менеджера баз данных запущены успешно.

Возможно, на шлюзе DB2 Connect не запущен протокол TCP/IP. До этого соединение с клиентом могло работать нормально.

Если diaglevel = 4, журнал db2diag.log может содержать подобную запись, например:

   1997-05-30-14.09.55.321092   Instance:svtdbm5   Node:000
PID:10296(db2tcpcm)   Appid:none
common_communication  sqlcctcpconnmgr_child   Probe:46
DIA3205E Адрес гнезда "30090", сконфигурированный в файле служб
TCP/IP и необходимый для поддержки сервера TCP/IP,
используется другим процессом.

Решение

Это предупреждение сигнализирует о том, что DB2 Connect, действующая как шлюз для удаленных клиентов, испытывает затруднения при обработке одного или нескольких клиентских протоколов связи. Это могут быть протоколы TCP/IP, APPC и другие, причем обычно данное сообщение указывает, что один из протоколов связи, определенных для DB2 Connect, сконфигурирован неверно.

Часто это происходит из-за того, что переменная профиля DB2COMM не определена или определена неправильно. В общем случае ошибка возникает из-за несоответствия между переменной DB2COMM и именами, определенными в конфигурации менеджера баз данных (например, svcename, nname, или tpname).

Сообщение об ошибке SQL5043 может быть получено при работе первоначального успешного соединения, в то время как ни одна из конфигураций не изменилась. Это может произойти при использовании протокола TCP/IP, когда удаленная система по какой-то причине ненормально завершает соединение. В этом случае соединение может продолжать существовать на клиенте, и есть вероятность его восстановления без дальнейшего вмешательства в ход сеанса с помощью приведенных ниже команд.

Скорее всего, у одного из клиентов, соединенных со шлюзом, все еще есть хэндл на порте TCP/IP. На каждом клиентском компьютере, который соединен со шлюзом, введите команды:

  1. db2 terminate
  2. db2stop

SQL30020

Признак

SQL30020N Выполнение завершилось неудачно из-за ошибки распределенного протокола, которая повлияет на выполнение последующих команд и операторов SQL.

Решения

При возникновении этой ошибки необходимо обратиться к службе поддержки.

Посмотрите в каталоге db2dump файл дампа ffdc (pid.000). Затем отформатируйте этот файл дампа командой db2fdump и проверьте, есть ли в полученном файле слово "ERROR". Возможно, в нем будет список MVSD. В этом случае посмотрите дальнейшую информацию на консоли MVS и отыщите код аварийного завершения в руководстве DB2 for MVS Messages and Codes.

SQL30060

Признак

SQL30060N "<ID_авторизации>" не имеет полномочий для выполнения операции "<операция>".

Решение

При соединении с DB2 for MVS или DB2 for OS/390 таблицы базы данных связей (Communications Database, CDB) не были правильно изменены. Посмотрите книгу

SQL30061

Признак

Произошло соединение с неверным хостом или сервером базы данных AS/400 - не удается найти базу данных назначения.

Решение

Возможно, в записи каталога DCS указано неверное имя сервера базы данных. В этом случае прикладной программе возвращается код SQLCODE -30061.

Проверьте записи узла DB2 базы данных и каталога DCS. Поле имени базы данных назначения в записи каталога DCS должно соответствовать имени базы данных на этой на платформе. Например, для базы данных DB2 Universal Database for OS/390 используемое имя должно совпадать с именем в поле загрузочного набора данных (Boot Strap Data Set, BSDS) "LOCATION=имя_положения", которое выдается также в сообщении DSNL004I (LOCATION=положение) при запуске DDF.

В вашем руководстве Быстрый старт по DB2 Connect приводятся примеры исправления каталогов DB2. Посмотрите разделы про изменение каталогов DB2 в главах, где описывается конфигурация SNA, или главу "Конфигурирование баз данных хоста и AS/400 для DB2 Connect" и раздел "Конфигурирование соединения TCP/IP".

Правильные команды для узла APPC или APPN:

   db2 catalog appc node <имя_узла> remote <имя_символич_назначения> security program
   db2 catalog dcs database <локальное_имя> as <реальное_имя_базы>
   db2 catalog database <локальное_имя> as <алиас> at node <имя_узла> 
                authentication dcs

Правильные команды для узла TCP/IP:

   db2 catalog tcpip node <имя_узла> remote <имя_или_адрес_хоста>
                server <номер_порта_или_имя_службы>
   db2 catalog dcs database <локальное_имя> as <реальное_имя_базы>
   db2 catalog database <локальное_имя> as <алиас> at node <имя_узла>
                authentication dcs

После этого, чтобы связаться с базой данных, используется команда:

   db2 connect to <алиас> user <имя_пользователя> using <пароль>

SQL30073 с кодом возврата 119C при выполнении оператора CONNECT

Признак

Получено сообщение SQL30073 с кодом возврата 119C. Это происходит, когда база данных сервера назначения не поддерживает кодовую страницу, используемую клиентом DB2 (соединяющимся через DB2 Connect). Кодовая страница определяется конфигурацией операционной среды, в которой работает клиент DB2.

Дополнительную информацию смотрите в руководстве Administration Guide.

Решение

Эту ошибку часто можно устранить, внеся исправление на системе базы данных сервера назначения. Свяжитесь с вашей обслуживающей организацией, чтобы получить и применить исправления, рекомендованные в этом случае.

В качестве временной меры пользователь может переопределить используемую по умолчанию кодовую страницу, задав переменную среды DB2CODEPAGE. Посмотрите используемую национальную версию или задайте DB2CODEPAGE=850.

На платформах UNIX пользователь может переключиться на другую кодовую страницу, задав новое значение переменной среды LANG.

SQL30081N с кодом возврата 1

Признак

Признак этой ошибки - получение следующего сообщения со смысловым кодом SNA:

  db2 connect to <имя_базы_данных> user <ID_пользователя>
  Введите пароль для <ID_пользователя>:
  SQL30081N Ошибка связи.
    Используемый протокол связи: "APPC".             
    Используемый интерфейс API связи: "CPI-C".
    Место, где обнаружена ошибка: "".
    Функция связи, обнаружившая ошибку: "cmallc".
    Коды ошибки протокола связи: "1", "*",
    "0x10030021".
    SQLSTATE=08001

Решения

В данном примере смысловой код - 10030021.

Ниже приводятся часто встречающиеся с этим сообщением смысловые коды и предлагаемые в каждом случае решения:

  1. SQL30081N с кодом возврата 1 и смысловым кодом SNA 0877002C
    

    Указано неверное сетевое имя.

  2. SQL30081N с кодом возврата 1 и смысловым кодом SNA ffff0003
    

    Указан неверный адрес MAC или связь SNA неактивна.

  3. SQL30081N с кодом возврата 1 и смысловым кодом SNA 10030021
    

    Не совпадает тип LU.

  4. SQL30081N с кодом возврата 1 и смысловым кодом SNA 084B6031
    

    Задано нулевое значение MAXDBAT в DSNZPARM (в DB2 for MVS или DB2 for OS/390)

Другие советы:

  1. При создании профиля локального LU определите это LU как LU по умолчанию. Например, в панели списка SNA Feature в CM/2 нужно:
  2. Проверьте, запущена ли SNA на шлюзе DB2 Connect
  3. Если используется DB2 for MVS или DB2 for OS/390, проверьте, запущено ли адресное пространство DDF и работает ли DB2.

SQL30081N с кодом возврата 2

Признак

Получено сообщение SQL30081N с кодом возврата 2 и смысловым кодом SNA 08120022.

Решение

Для параметра NUMILU в NCP (со стороны хоста), возможно, задано значение по умолчанию (0). Проверьте, так ли это. При необходимости измените определение NCP и повторите попытку после того, как изменение вступит в силу.

SQL30081N с кодом возврата 9

Признак

Признак - получение следующего сообщения (смысловой код SNA в этом случае не требуется):

   db2 connect to <база_данных>
user <ID_пользователя>
 
  SQL30081N Ошибка связи.
    Используемый протокол связи: "APPC".             
    Используемый интерфейс API связи: "CPI-C".
    Место, где обнаружена ошибка: "".
    Функция связи, обнаружившая ошибку: "cmsend".
    Коды ошибки протокола связи: "9", "*",
    "0x10086021".
    SQLSTATE=08001

Решение

Причина ошибки заключается в том, что имя программы транзакции (TPNAME) неверно определено в системе DB2 Connect. Например, конфигурация SNA изменена, но еще не проверена на шлюзе DB2 Connect. Подробности смотрите в руководствах DB2 Connect Enterprise Edition for OS/2 and Windows Quick Beginnings или DB2 Connect Personal Edition. Быстрый старт.

SQL30081N с кодом возврата 10

Признак

Признак - получение следующего сообщения (смысловой код SNA не требуется):

  SQL30081N Ошибка связи.
    Используемый протокол связи: "APPC".             
    Используемый интерфейс API связи: "CPI-C".
    Место, где обнаружена ошибка: "".
    Функция связи, обнаружившая ошибку: "cmrcv".
    Коды ошибки протокола связи: "10", "*", "*".
    SQLSTATE=08001

Решение

Убедитесь, что DB2 установлена правильно.

Если используется шлюз DB2 Connect для OS/2, при неправильном задании имени программы транзакции можно получить следующее сообщение:

   Коды ошибки протокола связи: "10", "*", "0x084C0000".
   SQLSTATE=08001

В CM/2 в этом случае имя надо определить так:

      Transaction program name        = 'tpname'    (user defined)
   OS/2 program path and file name = notused

и (на следующем экране конфигурирования CM/2)

   Presentation type - background
   Operation type - Queued, operator preloaded

SQL30081N с кодом возврата 20

Признак

     SQL30081N Ошибка связи.
    Используемый протокол связи: "APPC".             
    Используемый интерфейс API связи: "CPI-C".
    Место, где обнаружена ошибка: "".
    Функция связи, обнаружившая ошибку: "xcstp".
    Коды ошибки протокола связи: "20", "*", "*".
    SQLSTATE=08001

Решение

Убедитесь, что в системе DB2 Connect запущена подсистема SNA.

SQL30081N с кодом возврата 27

Признак

Получено сообщение SQL30081N с кодом возврата 27 и смысловым кодом SNA 800Axxxx.

Решение

Слишком длинный блок информации о пути (PIU) VTAM.

SQL30081N с кодом возврата 79

Признак

     SQL30081N Ошибка связи.
    Используемый протокол связи: "TCP/IP".
    Используемый интерфейс API связи: "SOCKETS".
    Положение, где обнаружена ошибка: "".
    Функция связи, обнаружившая ошибку: "connect".
    Коды ошибки протокола связи: "79", "*", "*".
    SQLSTATE=08001

Решения

Эта ошибка происходит, если удаленному клиенту не удается соединиться со шлюзом DB2 Connect. Она может также произойти при соединении с хостом со шлюза DB2 Connect.

  1. Возможно, на шлюзе DB2 Connect неверно задана переменная профиля DB2COMM. Проверьте, так ли это. Например, если DB2 Extended Enterprise Edition работает на AIX, в профиле sqllib/db2profile должна быть команда db2set db2comm=tcpip.
  2. Возможно, имя службы TCP/IP и номер порта на клиенте DB2 не соответствуют заданным на шлюзе DB2 Connect. Проверьте записи в файлах services TCP/IP на обоих компьютерах.
  3. Проверьте, запущена ли DB2 на шлюзе DB2 Connect. Установите для diaglevel в конфигурации менеджера баз данных значение 4 с помощью команды:
    db2 update dbm cfg using diaglevel 4
    
    После остановки и перезапуска DB2 просмотрите файл db2diag.log и проверьте, была ли запущена связь DB2 TCP/IP. На выходе должно появиться сообщение следующего типа:
       1998-02-03-12.41.04.861119   Instance:svtdbm2   Node:00
       PID:86496(db2sysc)   Appid:none
       common_communication  sqlcctcp_start_listen   Probe:80
       DIA3000I Поддержка протокола "TCPIP" запущена успешно.
    

SQL30081N с кодом ошибки протокола связи 10032

Признак

     SQL30081N Ошибка связи.
    Используемый протокол связи: "TCP/IP".
    Используемый интерфейс API связи: "SOCKETS".
    Положение, где обнаружена ошибка: "".
    Функция связи, обнаружившая ошибку: "send".
    Коды ошибки протокола связи: "10032", "*", "*".
    SQLSTATE=08001

Решение

Это сообщение об ошибке может быть получено при попытке рассоединения с компьютером, связь TCP/IP с которым уже была разорвана. Исправьте ошибку с помощью подсистемы TCP/IP.

На большинстве компьютеров для исправления этой ошибки достаточно перезапустить протокол TCP/IP. В некоторых случаях может потребоваться перезапуск всего компьютера.


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]