Известные проблемы и обходные приемы

| | |

Экспорт в файл IXF с индексами к столбцам, содержащим символы - |и +

|

Когда в команде export заданы формат файла IXF |и условие SELECT *, по мере необходимости выполняется сбор индексной информации.

|
|Ошибка и ее причина |

Если заданные в индексе имена столбцов содержат символы - или +, |индексная информация не будет собрана, и вы получите код SQL |SQL27984W. Экспорт будет продолжен, и на экспортируемые данные это не |повлияет. Однако индексная информация не будет сохранена в файле IXF.

|
|Обходной прием |

Если вы будете создавать таблицу снова при помощи команды import с параметром CREATE, индексы не будут воссозданы. |Чтобы все-таки создать индексы, используйте утилиту db2look.

| | |

Ошибка CLI0116E или SQL0428N при вызове API db2ReadLog

|
|Ошибка и ее причина |

Вызов API db2ReadLog из прикладной программы может привести к ошибке |при отключении программы от базы данных, если перед отключением не выполнены принятие или откат:

|
|
|Обходной прием 1 |

Для невстроенных прикладных программ SQL включите режим автопринятия перед вызовом API db2ReadLog.

|
|Обходной прием 2 |

Выполните операторы COMMIT или ROLLBACK после вызова API db2ReadLog, но до отключения от базы данных.

Команда "db2gcf -k" завершается неудачно в DB2 UDB Workgroup Server Edition

Ошибка и ее причина

Обычно команда db2gcf запускает, останавливает или производит мониторинг экземпляраDB2 Universal Database (UDB) из автоматического сценария, например из кластера HA (высокой доступности).

Использование системной команды db2gcf с параметром -k в DB2 UDB Workgroup Server приводит к ошибке.

Обходной прием

Команда "db2gcf -k" работает только на DB2 UDB Enterprise Server Edition; она не работает на DB2 UDB Workgroup Server Edition.

Ошибка SQL1224 оболочки DRDA (AIX)

Если 32-битный сервер DB2 Universal Database (UDB) запущен в системе AIX, и у запущенной в той же системе программы есть несколько локальных соединений с базой данных через оболочку DRDA, программа может получить следующую ошибку:

SQL1822N  Неожиданный код ошибки "-1224" получен от
источника данных "W3_SERVER2". 
Соответствующий текст и элементы - 
  func="DriverConnect" 
  msg="SQL1224N  Агент базы данных для обслуживания требования
                 не удалось запустить или его работа прервана
                 в результате закрытия системы базы данных
                 или команды force. "
SQLSTATE=560BD

Чтобы предотвратить эту ошибку, добавьте в файл конфигурации объединения (instance_directory/cfg/db2dj.ini) следующую запись:

EXTSHM=ON
Прим.:
При добавлении записей в файл конфигурации объединения для вступления изменений в силу надо остановить и перезапустить DB2 UDB.

Другой способ - можно каталогизировать локальную базу данных DB2 UDB как узел TCP/IP. Например:

CATALOG TCPIP NODE my_node REMOTE my_host SERVER 123;
CATALOG DB mydb AT NODE my_node;
CREATE WRAPPER drda;
CREATE SERVER my_server TYPE DB2/UDB VERSION 8 WRAPPER drda
   AUTHORIZATION "my_id" PASSWORD "my_pw"
   OPTIONS(ADD DBNAME 'MYDB');

Не работают горячие клавиши в Microsoft Visual Studio .NET Framework 1.1

Если в Microsoft Visual Studio .NET Framework 1.1 не работают горячие клавиши, можно взять исправление с сайта Microsoft. Это исправление можно найти в Microsoft Knowledge Base, статья Q836745.

Национальная версия на упрощенном китайском (AIX)

В AIX изменен кодовый набор национальной версии упрощенного китайского Zh_CN на:

Кодовый набор изменен с GBK (кодовая страница 1386) на GB18030 (кодовая страница 5488 или 1392). Так как DB2 Universal Database (UDB) для AIX сразу поддерживала кодовый набор GBK и кодовый набор GB18030 через Unicode, по умолчанию DB2 UDB будет использовать для кодового набора Zh_CN ISO 8859-1 (кодовая страница 819), и, кроме того, в некоторых операциях будет принимать по умолчанию территорию Соединенные Штаты (US).

Чтобы обойти это ограничение, есть две возможности:

Если вы выбрали первую возможность, введите следующие команды:

db2set DB2CODEPAGE=1386
db2set DB2TERRITORY=86
db2 terminate
db2stop
db2start 

Если вы выбрали вторую возможность, измените национальную версию с Zh_CN либо на ZH_CN, либо на zh_CN. Для национальной версии ZH_CN используется кодовый набор Unicode (UTF-8), а для zh_CN - eucCN (кодовая страница 1383).

Национальная версия на упрощенном китайском (Red Hat Linux)

В Red Hat Версии 8 и новее (включая Red Hat Enterprise Linux [RHEL] версии 2.1 и 3) изменен кодовый набор по умолчанию для упрощенного китайского с GBK (кодовая страница 1386) на GB18030 (кодовая страница 5488 или 1392).

Так как DB2 Universal Database (UDB) для Linux сразу поддерживала кодовый набор GBK и кодовый набор GB18030 через Unicode, DB2 UDB будет использовать по умолчанию кодовый набор ISO 8859-1 (кодовая страница 819), и, кроме того, в некоторых операциях будет принимать по умолчанию территорию Соединенные Штаты (US).

Чтобы обойти это ограничение, есть две возможности:

Если вы выбрали первую возможность, введите следующие команды:

db2set DB2CODEPAGE=1386
db2set DB2TERRITORY=86
db2 terminate
db2stop
db2start 

Если вы выбрали вторую возможность, введите одну из следующих команд:

export LANG=zh_CN.gbk
export LANG=zh_CN
export LANG=zh_CN.utf8

где с zh_CN связан кодовый набор eucCN или кодовая страница 1383, а с zh_CN.utf8 - кодовая страница 1208.

Несовместимость менеджера драйверов Merant (UNIX)

Существует несовместимость поддержки Unicode при обращении Merant Driver Manager к драйверу DB2 ODBC в UNIX. Эта несовместимость приводит к тому, что Merant Driver Manager использует Unicode, даже когда прикладная программа не требует этого. Это может вызвать ошибки таких компонентов, как Центр хранилищ данных, Менеджер каталогов данных и MQSI, которым требуется Merant Driver Manager для поддержки источников данных других поставщиков (не IBM). Пока эта проблема не решена окончательно, можно использовать другую библиотеку драйверов ODBC DB2 без поддержки Unicode.

Альтернативная библиотека драйверов ODBC DB2 без поддержки Unicode поставляется с DB2 Universal Database (UDB) Версия 8.1 для AIX, HP-UX и операционной среды Solaris. Чтобы использовать эту библиотеку, надо сделать ее копию, задав для нее то же имя, что и для исходной библиотеки драйверов ODBC DB2.

Прим.:
Альтернативная библиотека (_36) содержит функции Unicode, необходимые драйверу DB2 JDBC. Эта библиотека позволяет прикладным программам JDBC (в том числе WebSphere Application Server) успешно работать с DB2 UDB.

Чтобы перейти к использованию библиотеки ODBC без поддержки Unicode в AIX, HP-UX или операционной среде Solaris, следуйте приведенным ниже указаниям. Поскольку эти действия выполняются вручную, их нужно повторять при каждом обновлении продукта, в том числе после применения последующих пакетов FixPak или уровней модификации.

Порядок действий

AIX

Чтобы создать альтернативную библиотеку в AIX:

  1. Зарегистрировавшись как владелец экземпляра, с помощью команды db2stop force завершите работу всех экземпляров базы данных.
  2. Зарегистрировавшись с ID экземпляра сервера администратора (DAS) DB2, с помощью команды db2admin stop force завершите работу экземпляра DAS.
  3. Сделайте резервную копию исходного файла db2.o из каталога /usr/lpp/db2_81/lib.
  4. Зарегистрировавшись как пользователь root, выполните команду slibclean.
  5. Скопируйте файл db2_36.o на место файла db2.o, сохранив для него владельца и разрешения. Используйте следующую команду:
    cp db2_36.o db2.o
    -r--r--r-- bin:bin for db2.o

Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла db2_36.o.

Операционная среда Solaris

Чтобы создать альтернативную библиотеку в операционной среде Solaris:

  1. Зарегистрировавшись как владелец экземпляра, с помощью команды db2stop force завершите работу всех экземпляров базы данных.
  2. Зарегистрировавшись с ID экземпляра сервера администратора (DAS) DB2, с помощью команды db2admin stop force завершите работу экземпляра DAS.
  3. Сделайте резервную копию исходного файла libdb2.so.1 из каталога /opt/IBMdb2/V8.1/lib.
  4. Скопируйте файл libdb2_36.so.1 на место файла libdb2.so.1, сохранив для него владельца и разрешения. Используйте следующую команду:
    cp libdb2_36.so.1 libdb2.so.1 
    -r-xr-xr-x bin:bin libdb2.so.1
  5. Выполните команду db2iupdt <экземпляр> для каждого экземпляра базы данных и команду dasupdt <экземпляр_das> для экземпляра DAS.

Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла libdb2_36.so.1.

HP-UX PA-RISC

Чтобы создать альтернативную библиотеку в HP-UX PA-RISC:

  1. С помощью команды db2stop force завершите работу всех экземпляров базы данных.
  2. С помощью команды db2admin stop force завершите работу экземпляра сервера администратора (DAS) DB2.
  3. Сделайте резервную копию исходного файла libdb2.sl из каталога /opt/IBMdb2/V8.1/lib.
  4. Скопируйте файл libdb2_36.sl на место файла libdb2.sl, сохранив для него владельца и разрешения. Для согласованности используйте команду:
    cp libdb2_36.sl libdb2.sl
    -r-xr-xr-x bin:bin for libdb2.sl
  5. Выполните команду db2iupdt <экземпляр> для каждого экземпляра базы данных и команду dasupdt <экземпляр_das> для экземпляра DAS.

Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла libdb2_36.sl.

HP-UX на IA64

Чтобы создать альтернативную библиотеку в HP-UX на IA64:

  1. С помощью команды db2stop force завершите работу всех экземпляров базы данных.
  2. С помощью команды db2admin stop force завершите работу экземпляра сервера администратора (DAS) DB2.
  3. Сделайте резервную копию исходного файла libdb2.so из каталога /opt/IBMdb2/V8.1/lib.
  4. Скопируйте файл libdb2_36.so на место файла libdb2.so, сохранив для него владельца и разрешения. Для согласованности используйте команду:
    cp libdb2_36.so libdb2.so
    -r-xr-xr-x bin:bin for libdb2.so
  5. Выполните команду db2iupdt <экземпляр> для каждого экземпляра базы данных и команду dasupdt <экземпляр_das> для экземпляра DAS.

Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла libdb2_36.so.

Другие операционные системы UNIX

Если вам требуется помощь с DB2 UDB и Merant Driver Manager в других операционных системах UNIX, обратитесь в службу поддержки IBM.

NFS APAR IY32512 - Недоступные потоки (AIX)

AIX 5 NFS APAR IY32512 может привести к ошибке команды остановки db2stop в системах с большим числом разделов.

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

Если возникла такая ситуация, остановленные узлы надо перезапустить. Есть обходной прием DB2 Universal Database для этой ситуации - останавливать узлы по одному при помощи опции NODENUM команды db2stop.

Ошибка опции прекомпилятора SQLFLAG(STD)

Использование опции прекомпилятора SQLFLAG(STD) приводит к следующей ошибке: Abend C6 occurred while running Precompile program DSNHPC (Аварийное завершение C6 при выполнении программы прекомпиляции DSNHPC).

Если Центр разработки используется для создания хранимых процедур SQL для работы в DB2 Universal Database for z/OS Версии 8, удалите опцию прекомпилятора SQLFLAG (STD).

| | |

При использовании Sysplex в DB2 Connect нужно включить объединение соединений в пул

|
|Ошибка и ее причина |

DB2 Connect(TM) не отдает соединение другому элементу утилиты распределенных данных |(DDF) при закрытии подключенного элемента DDF из группы совместного использования данных в OS390. Если включен Sysplex, DB2 Connect передает соединения другим элементам DDF согласно списку серверов.

|

DB2 Connect Version 8 Sysplex предназначался для работы с пулом агентов. |Список серверов Sysplex освобождается, если нет агентов и нет соединений с базой данных. Поэтому для поддержания списка серверов Sysplex необходимо оставить хотя бы один агент.

|
|Обходной прием |

Включите объединение соединений в пул следующей командой:

|
db2 update dbm cfg using num_poolagents число
|db2stop
|db2start

, где число - максимальное число |агентов, допускаемое в пуле экземпляра DB2. Объединение соединений в пул |включено, когда число больше 0.

|
|Рекомендации |

Задайте num_poolagents равным -1, что будет исправлено на половину величины, |присвоенной параметру конфигурации maxagents

DB2 Connect Custom Advisor

Хотя в документации DB2 Connect User's Guide утверждается обратное, DB2 Connect Custom Advisor в Версии 8.2 больше не поддерживается.

Создание базы данных каталога инструментов завершается неудачно (HP-UX)

Ошибка и ее причина
При установке DB2 Universal Database (UDB) Версии 8.2 в HP-UX, команда CREATE TOOLS CATALOG завершается неудачно с кодом SQLCODE -22209, если она выполняется в 32-битном экземпляре и параметр конфигурации DB2 Administration Server jdk_path указывает на HP-UX SDK 1.4. Эта ошибка возникает из-за того, что по умолчанию DB2 UDB Версии 8.2 устанавливает HP-UX SDK 1.4, но 32-битный экземпляр Версии 8.2 для успешного выполнения команды CREATE TOOLS CATALOG требует HP-UX SDK 1.3.

Эта ошибка может также возникнуть при установке DB2 UDB Версии 8.1 FixPak 7, если вы вручную обновили параметр конфигурации DB2 Administration Server jdk_path, так что он стал указывать на HP-UX SDK 1.4, или если вы отбросили и заново создали сервер администратора DB2 (DAS). В обоих случаях ошибка возникает из-за того, что параметр конфигурации jdk_path указывает на HP-UX SDK 1.4.

Для успешной работы 32-битного экземпляра DB2 UDB Версии 8.2 требуется HP-UX SDK 1.3.

Обходной прием 1
Создайте каталог инструментов в 64-битном экземпляре.
Обходной прием 2
Создайте каталог инструментов в 32-битном экземпляре, выполнив следующие действия:
  1. Загрузите HP-UX SDK 1.3 с сайта HP-UX: http://www.hp.com/products1/unix/java/
  2. Установите HP-UX SDK 1.3.
  3. Измените параметр конфигурации DB2 Administration Server jdk_path, чтобы он указывал на HP-UX SDK 1.3. Например:
    db2 update admin config using JDK_PATH /opt/java1.3
  4. Перезапустите сервер администратора DB2.
    db2admin stop
    db2admin start
  5. Выполните снова команду CREATE TOOLS CATALOG в 32-битном экземпляре.

Вывод индийских символов в инструментах GUI DB2

Если у вас возникают проблемы при выводе индийских символов в инструментах GUI DB2, в вашей системе, это, возможно, значит, что у вас установлены не все шрифты.

В пакет DB2 Universal Database (UDB) входят перечисленные ниже пропорциональные шрифты IBM TrueType и OpenType для языков Индии. Эти шрифты можно найти в каталоге font на любом из следующих компакт-дисков:

Эти шрифты предназначены только для использования с DB2 UDB. Вам не разрешается произвольное использование или распространение этих шрифтов:

Табл. 9. Индийские шрифты, прилагаемые к DB2 UDB
Гарнитура Начертание Имя файла шрифта
Devanagari MT for IBM Среднее devamt.ttf
Devanagari MT for IBM Жирное devamtb.ttf
Tamil Среднее TamilMT.ttf
Tamil Жирное TamilMTB.ttf
Telugu Среднее TeluguMT.ttf
Telugu Жирное TeleguMTB.ttf

Подробные инструкции по установке этих шрифтов и исправлению файла font.properties можно найти в разделе Internationalization документации по комплекту IBM Development Kit for Java.

Кроме того, индийские шрифты, которые можно использовать с инструментами графического интерфейса DB2, поставляются со следующими продуктами Microsoft:

Инструменты с графическим интерфейсом не поддерживаются для серверов zSeries (Linux)

За исключением мастера по установке DB2, инструменты с графическим интерфейсом не будут работать на серверах zSeries с операционной системой Linux. Это ограничение относится и ко всем компонентам, запускаемым с панели установки, таким как Краткий обзор.

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

Заключайте условие поиска в Информационном центре DB2 в кавычки, если оно содержит числа

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

Например, при поиске с приведенным ниже условием вы не получите никаких результатов:

  1.4.1

Но вы получите соответствующие результаты, если заключите условие поиска в кавычки:

  "1.4.1"

При поиске с приведенным ниже условием вы получите лишние темы:

  DB20000I

А при поиске с приведенным ниже условием вы получите то, что нужно:

  "DB20000I"

При импорте файлов языка тегов не генерируется файл журнала Центра каталогов данных

Если при импорте файлов языка тегов в Центр каталогов данных не генерируется файл журнала Центра каталогов данных, выполните следующие действия по исправлению ошибки:

При запуске db2icmimport из командной строки:
При импорте файла языка тегов при помощи графического интерфейса Центра каталогов данных:

Связывание пакетов Query Patroller

Если после применения пакета FixPak не выполнено связывание пакетов Query Patroller, пользователь без полномочий DBADM и соответствующих привилегий Query Patroller может получать следующее сообщение об ошибке при использовании Центра Query Patroller или командной строки Query Patroller:

SQL0001N - Binding or precompilation did not complete successfully.
(SQL0001N - Связывание или прекомпиляция не были завершены успешно.)

При использовании Центра Query Patroller сообщение об ошибке SQL0001N записывается в файл qpdiag.log. При использовании командной строки Query Patroller сообщение об ошибке SQL0001N выводится на консоль.

Предусмотрен программный код для запуска автоматического связывания. Однако автоматическое связывание невозможно, если у соединяющегося пользователя нет необходимых привилегий для выполнения всех операторов в пакетах Query Patroller. Признак этой проблемы - отсутствие папок в Центре Query Patroller.

Чтобы исправить эту ошибку, пользователь с полномочиями DBADM или необходимыми привилегиями должен вручную выполнить связывание пакетов qpserver.lst после применения пакета FixPak.

Порты недоступны через Query Patroller (Windows)

Ошибка и ее причина

Поданные запросы в Query Patroller могут получать код SQL -29007, когда не остается доступных портов в Windows XP или Windows 2003. Вероятность этой ошибки возрастает с ростом числа клиентов, обращающихся к Query Patroller.

Обходной прием

Задайте следующие переменные реестра Windows:

   MaxUserPort=65534
   TcpTimedWaitDelay=30 

и перезапустите систему, чтобы изменения вступили в силу.

Подробности о заданнии переменных реестра Windows можно найти на сайте Microsoft(R) Help and Support по адресу http://support.microsoft.com/.

Защищенные среды (Windows)

Если вы - не администратор системы Windows, при работе с DB2 Universal Database (UDB) в Windows у вас могут возникать проблемы с разрешениями для файлов. Если вы получаете сообщение об ошибке SQL1035N, SQL1652N или SQL5005C, возможные причины и обходные приемы указаны ниже:

Пользователь не имеет достаточных полномочий для каталога sqllib

Ошибка и ее причина
При попытке открыть командное окно или процессор командной строки DB2 пользователь получает сообщение об ошибке SQL1035N или SQL1652N. Код DB2 UDB (основные файлы) установлены в каталоги с ограниченными разрешениями на запись, однако некоторым инструментам DB2 UDB требуется писать в каталог DB2INSTPROF и создавать в нем файлы.
Обходной прием
Создайте новый каталог, для которого вы можете дать пользователям как минимум разрешение MODIFY, и либо используйте команду db2set -g db2tempdir, чтобы указать на этот каталог, либо задайте переменную системной среды Windows db2tempdir.
У пользователя недостаточно полномочий для записи в каталог sqllib\<каталог_экземпляра>, хотя этот пользователь и принадлежит к группе SYSADM_GROUP

Ошибка и ее причина
При попытке изменения файла конфигурации менеджера баз данных (update dbm cfg) пользователь получает сообщение о системной ошибке SQL5005C. У пользователя нет разрешений NTFS на запись в каталог sqllib\каталог_экземпляра, хотя этот пользователь и принадлежит к группе SYSADM_GROUP.
Первый обходной прием

Дайте пользователям как минимум полномочия MODIFY для каталога каталог_экземпляра на уровне файловой системы.

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

Переименованы программы примеров XML Extender

Имена некоторых программ примеров XML Extender могут совпадать с именами других установленных программ. Если случайно запустить другую программу с тем же именем, что и имя программы примера XML Extender, это может привести к повреждению ваших файлов XML. В следующем списке приведены старые имена программ примеров XML Extender, а также новые заменяющие их имена программ, которые не будут вызывать конфликтов. Используйте эти новые имена программ примеров вместо старых, чтобы избежать повреждения файлов XML.

Табл. 10. Замена программ примеров для XML Extender (Windows)
Старая программа (не надо использовать) Новая программа (используйте вместо старой)
insertx.exe dxxisrt.exe
retrieve.exe dxxretr.exe
retrieve2.exe dxxretr2.exe
retrievec.exe dxxretrc.exe
shred.exe dxxshrd.exe
tests2x.exe dxxgenx.exe
tests2xb.exe dxxgenxb.exe
tests2xc.exe dxxgenxc.exe
Табл. 11. Замена программ примеров для XML Extender (Linux и UNIX)
Старая программа (не надо использовать) Новая программа (используйте вместо старой)
insertx dxxisrt
retrieve dxxretr
retrieve2 dxxretr2
retrievec dxxretrc
shred dxxshrd
tests2x dxxgenx
tests2xb dxxgenxb
tests2xc dxxgenxc

Использование новых программ примеров с примерами файлов sqx

Исходный код (файлы .sqx) для перечисленных выше исполняемых файлов находится в подкаталоге samples\db2xml\c каталога установки. Для исходных файлов пока использованы старые имена. Если вы внесли изменения в исходный код, скопируйте вновь скомпилированные исполняемые файлы (со старыми именами) в каталог sqllib\bin.

В системах Windows нужно сделать дополнительную копию, дать ей новое имя, указанное выше, и скопировать в каталог bin. Обе копии заменят существующие файлы в каталоге bin. Например, после компиляции новой версии shred.exe, нужно сделать две копии и заменить ими файлы в каталоге bin: одна копия с именем shred.exe и другая - переименованная в dxxshrd.exe.

На платформах Linux и UNIX нужно только заменить файл со старым именем на новую скомпилированную версию. При создании из этих примеров новых исполнимых файлов необходимо скопировать эти новые файлы из каталога \SQLLIB\samples\db2xml\c\ в каталог \SQLLIB\bin\, а затем сделать дополнительную копию, переименовав их в соответствии с приведенной выше таблицей.

Анализ в XML Extender документов, содержащих неуникальные имена атрибутов и элементов

Теперь можно анализировать документы с неуникальными именами атрибутов или неуникальными именами элементов, отображающихся на другие столбцы (этой же или другой таблицы), не получая ошибки DXXQ045E. Ниже показан пример документа XML с неуникальными именами атрибутов и неуникальными именами элементов:

<Order ID="0001-6789">
       <!-- Примечание: ID имени атрибута не уникален -->
       <Customer ID = "1111">
                    <Name>John Smith</Name>
       </Customer>
       <!-- Примечание: ID имени элемента не уникален -->
       <Salesperson ID = "1234"> 
              <Name>Jane Doe</Name>
       </Salesperson>
       <OrderDetail>
              <ItemNo>xxxx-xxxx</ItemNo>
              <Quantity>2</Quantity>
              <UnitPrice>12.50</UnitPrice>
       </OrderDetail>
       <OrderDetail>
              <ItemNo>yyyy-yyyy</ItemNo>
              <Quantity>4</Quantity>
              <UnitPrice>24.99</UnitPrice>
       </OrderDetail>       
</Order>

Сопровождающий файл DAD, в котором задается отображение повторяющихся элементов и атрибутов на другие столбцы, выглядит так:

<element_node name="Order">
  <RDB_node>
    <table name="order_tab" key="order_id"/>
    <table name="detail_tab"/>
    <condition>
      order_tab.order_id=detail_tab.order_id
    </condition>
  </RDB_node>

  <!-- ID атрибута ниже повторяется, но он отображается на
     другой столбец -->
  <attribute_node name="ID">
    <RDB_node>
      <table name="order_tab" />
      <column name="order_id" type="char(9)"/>
    </RDB_node>
  </attribute_node>
  
  <element_node name="Customer">
    <!-- ID атрибута уже был выше, но он отображается на другой столбец -->
    <attribute_node name="ID">
      <RDB_node>
        <table name="order_tab" />
        <column name="cust_id" type="integer"/>
      </RDB_node>
    </attribute_node>

    <!-- имя элемента ниже повторяется, но оно отображается
       на другой столбец -->
    <element_node name="Name"> 
      <text_node>
        <RDB_node>
          <table name="order_tab" />
          <column name="cust_name" type="char(20)" />
        </RDB_node>
      </text_node>
    </element_node>
  </element_node>
    
  <element_node name="Salesperson">
    <!-- ID атрибута уже был выше, но он отображается на другой столбец -->
    <attribute_node name="ID">
      <RDB_node>
        <table name="order_tab" />
        <column name="salesp_id" type="integer"/>
      </RDB_node>
    </attribute_node>
          
    <!-- имя элемента уже было выше, но оно отображается
       на другой столбец --> 
    <element_node name="Name"> 
      <text_node>
        <RDB_node>
          <table name="order_tab" />
          <column name="salesp_name" type="char(20)" />
        </RDB_node>
      </text_node>
    </element_node>
  </element_node>
    
  <element_node name="OrderDetail" multi_occurrence="YES">
    <element_node name="ItemNo">
      <text_node>
        <RDB_node>
          <table name="detail_tab" />
          <column name="itemno" type="char(9)"/>
        </RDB_node>
      </text_node>
    </element_node>
    <element_node name="Quantity">
      <text_node>
        <RDB_node>
          <table name="detail_tab" />
          <column name="quantity" type="integer"/>
        </RDB_node>
      </text_node>
    </element_node>
    <element_node name="UnitPrice">
      <text_node>
        <RDB_node>detail_tab" />
          <table name="detail_tab" />        
          <column name="unit_price" type="decimal(7,2)"/>
        </RDB_node>
      </text_node>
    </element_node>
  </element_node>
</element_node>

После анализа показанного выше документа содержимое таблицы будет выглядеть так:

ORDER _TAB:

ORDER_ID       CUST_ID       CUST_NAME       SALESP_ID       SALESP_NAME
0001-6789      1111          John Smith      1234            Jane Doe

DETAIL_TAB:

ORDER_ID          ITEMNO         QUANTITY          UNIT_PRICE
0001-6789         xxxx-xxxx      2                 12.50
0001-6789         yyyy-yyyy      4                 24.99
Прим.:
Чтобы отобразить несколько элементов и атрибутов на один и тот же столбец одной таблицы, определите для этой таблицы алиас и используйте этот алиас в элементе <таблица> DAD для одного из этих отображений.

Различия между SNA и TCP/IP при использовании DB2 Connect

Если для соединения с системой OS/390 используется SNA, при установлении нового соединения в слое VTAM хоста автоматически запускается принятие. Такое автоматическое принятие позволяет перевести поток на стороне хоста в неактивной состояние; этот поток немедленной становится неактивным.

Однако при соединении с системой OS/390 с использованием TCP/IP автоматическое принятие не выполняется. Чтобы сделать поток на стороне хоста неактивным, программа должна после соединения сама явным образом инициировать принятие. Если явное принятие не будет выполнено, для потока начинается отсчет срока бездействия.

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

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