Когда в команде export заданы формат файла IXF и условие SELECT *, по мере необходимости выполняется сбор индексной информации.
Если заданные в индексе имена столбцов содержат символы - или +, индексная информация не будет собрана, и вы получите код SQL SQL27984W. Экспорт будет продолжен, и на экспортируемые данные это не повлияет. Однако индексная информация не будет сохранена в файле IXF.
Если вы будете создавать таблицу снова при помощи команды import с параметром CREATE, индексы не будут воссозданы. Чтобы все-таки создать индексы, используйте утилиту db2look.
Вызов API db2ReadLog из прикладной программы может привести к ошибке при отключении программы от базы данных, если перед отключением не выполнены принятие или откат:
Для невстроенных прикладных программ SQL включите режим автопринятия перед вызовом API db2ReadLog.
Выполните операторы COMMIT или ROLLBACK после вызова API db2ReadLog, но до отключения от базы данных.
Обычно команда db2gcf запускает, останавливает или производит мониторинг экземпляраDB2 Universal Database (UDB) из автоматического сценария, например из кластера HA (высокой доступности).
Использование системной команды db2gcf с параметром -k в DB2 UDB Workgroup Server приводит к ошибке.
Команда "db2gcf -k" работает только на DB2 UDB Enterprise Server Edition; она не работает на DB2 UDB Workgroup Server Edition.
Если 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 как узел 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. Это исправление можно найти в Microsoft Knowledge Base, статья Q836745.
В 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 Версии 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.
Существует несовместимость поддержки 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.
Чтобы перейти к использованию библиотеки ODBC без поддержки Unicode в AIX, HP-UX или операционной среде Solaris, следуйте приведенным ниже указаниям. Поскольку эти действия выполняются вручную, их нужно повторять при каждом обновлении продукта, в том числе после применения последующих пакетов FixPak или уровней модификации.
Чтобы создать альтернативную библиотеку в AIX:
cp db2_36.o db2.o -r--r--r-- bin:bin for db2.o
Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла db2_36.o.
Чтобы создать альтернативную библиотеку в операционной среде Solaris:
cp libdb2_36.so.1 libdb2.so.1 -r-xr-xr-x bin:bin libdb2.so.1
Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла libdb2_36.so.1.
Чтобы создать альтернативную библиотеку в HP-UX PA-RISC:
cp libdb2_36.sl libdb2.sl -r-xr-xr-x bin:bin for libdb2.sl
Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла libdb2_36.sl.
Чтобы создать альтернативную библиотеку в HP-UX на IA64:
cp libdb2_36.so libdb2.so -r-xr-xr-x bin:bin for libdb2.so
Чтобы вернуться к исходному объекту, сделайте те же действия, используя созданную резервную копию вместо файла libdb2_36.so.
Если вам требуется помощь с DB2 UDB и Merant Driver Manager в других операционных системах UNIX, обратитесь в службу поддержки IBM.
AIX 5 NFS APAR IY32512 может привести к ошибке команды остановки db2stop в системах с большим числом разделов.
На сервере, который получает много запросов на блокировку уже заблокированных файлов, демон блокировки может перестать отвечать. Такая ситуация происходит, когда все доступные потоки блокировки выделены для потоков, ожидающие снятия блокировок, и поэтому нет доступного потока, который мог бы принять работу при поступлении требования на снятие блокировки.
Если возникла такая ситуация, остановленные узлы надо перезапустить. Есть обходной прием DB2 Universal Database для этой ситуации - останавливать узлы по одному при помощи опции NODENUM команды db2stop.
Использование опции прекомпилятора SQLFLAG(STD) приводит к следующей ошибке: Abend C6 occurred while running Precompile program DSNHPC (Аварийное завершение C6 при выполнении программы прекомпиляции DSNHPC).
Если Центр разработки используется для создания хранимых процедур SQL для работы в DB2 Universal Database for z/OS Версии 8, удалите опцию прекомпилятора SQLFLAG (STD).
DB2 Connect(TM) не отдает соединение другому элементу утилиты распределенных данных (DDF) при закрытии подключенного элемента DDF из группы совместного использования данных в OS390. Если включен Sysplex, DB2 Connect(TM) передает соединения другим элементам 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 User's Guide утверждается обратное, DB2 Connect Custom Advisor в Версии 8.2 больше не поддерживается.
Эта ошибка может также возникнуть при установке 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.
db2 update admin config using JDK_PATH /opt/java1.3
db2admin stop db2admin start
Если у вас возникают проблемы при выводе индийских символов в инструментах GUI DB2, в вашей системе, это, возможно, значит, что у вас установлены не все шрифты.
В пакет DB2 Universal Database (UDB) входят перечисленные ниже пропорциональные шрифты IBM TrueType и OpenType для языков Индии. Эти шрифты можно найти в каталоге font на любом из следующих компакт-дисков:
Эти шрифты предназначены только для использования с 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:
За исключением мастера по установке DB2, инструменты с графическим интерфейсом не будут работать на серверах zSeries с операционной системой Linux. Это ограничение относится и ко всем компонентам, запускаемым с панели установки, таким как Краткий обзор.
Если вы хотите использовать инструменты с графическим интерфейсом в таких системах, установите инструменты управления на клиентской системе с иной конфигурацией и используйте этот клиент для обращения к серверу zSeries.
Для получения правильного результата поиска в Информационном центре DB2 необходимо заключать в кавычки условия поиска, содержащие числа.
Например, при поиске с приведенным ниже условием вы не получите никаких результатов:
1.4.1
Но вы получите соответствующие результаты, если заключите условие поиска в кавычки:
"1.4.1"
При поиске с приведенным ниже условием вы получите лишние темы:
DB20000I
А при поиске с приведенным ниже условием вы получите то, что нужно:
"DB20000I"
Если при импорте файлов языка тегов в Центр каталогов данных не генерируется файл журнала Центра каталогов данных, выполните следующие действия по исправлению ошибки:
db2javit -j:com.ibm.db2.common.icm.tag.IcmImport -w: -i: -o:"-Xmx128m -Xms32m" -g:"d:\temp\myimport.trc" ...
Если после применения пакета 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 могут получать код SQL -29007, когда не остается доступных портов в Windows XP или Windows 2003. Вероятность этой ошибки возрастает с ростом числа клиентов, обращающихся к Query Patroller.
Задайте следующие переменные реестра Windows:
MaxUserPort=65534 TcpTimedWaitDelay=30
и перезапустите систему, чтобы изменения вступили в силу.
Подробности о задании переменных реестра Windows можно найти на сайте Microsoft(R) Help and Support по адресу http://support.microsoft.com/.
Если вы - не администратор системы Windows, при работе с DB2 Universal Database (UDB) в Windows у вас могут возникать проблемы с разрешениями для файлов. Если вы получаете сообщение об ошибке SQL1035N, SQL1652N или SQL5005C, возможные причины и обходные приемы указаны ниже:
Дайте пользователям как минимум полномочия MODIFY для каталога каталог_экземпляра на уровне файловой системы.
Имена некоторых программ примеров XML Extender могут совпадать с именами других установленных программ. Если случайно запустить другую программу с тем же именем, что и имя программы примера XML Extender, это может привести к повреждению ваших файлов XML. В следующем списке приведены старые имена программ примеров XML Extender, а также новые заменяющие их имена программ, которые не будут вызывать конфликтов. Используйте эти новые имена программ примеров вместо старых, чтобы избежать повреждения файлов XML.
Старая программа (не надо использовать) | Новая программа (используйте вместо старой) |
---|---|
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 |
Старая программа (не надо использовать) | Новая программа (используйте вместо старой) |
---|---|
insertx | dxxisrt |
retrieve | dxxretr |
retrieve2 | dxxretr2 |
retrievec | dxxretrc |
shred | dxxshrd |
tests2x | dxxgenx |
tests2xb | dxxgenxb |
tests2xc | dxxgenxc |
Исходный код (файлы .sqx) для перечисленных выше исполняемых файлов находится в подкаталоге samples\db2xml\c каталога установки. Для исходных файлов пока использованы старые имена. Если вы внесли изменения в исходный код, скопируйте вновь скомпилированные исполняемые файлы (со старыми именами) в каталог sqllib\bin.
В системах Windows нужно сделать дополнительную копию, дать ей новое имя, указанное выше, и скопировать в каталог bin. Обе копии заменят существующие файлы в каталоге bin. Например, после компиляции новой версии shred.exe, нужно сделать две копии и заменить ими файлы в каталоге bin: одна копия с именем shred.exe и другая - переименованная в dxxshrd.exe.
На платформах Linux и UNIX нужно только заменить файл со старым именем на новую скомпилированную версию. При создании из этих примеров новых исполнимых файлов необходимо скопировать эти новые файлы из каталога \SQLLIB\samples\db2xml\c\ в каталог \SQLLIB\bin\, а затем сделать дополнительную копию, переименовав их в соответствии с приведенной выше таблицей.
Теперь можно анализировать документы с неуникальными именами атрибутов или неуникальными именами элементов, отображающихся на другие столбцы (этой же или другой таблицы), не получая ошибки 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
Если для соединения с системой OS/390 используется SNA, при установлении нового соединения в слое VTAM хоста автоматически запускается принятие. Такое автоматическое принятие позволяет перевести поток на стороне хоста в неактивной состояние; этот поток немедленной становится неактивным.
Однако при соединении с системой OS/390 с использованием TCP/IP автоматическое принятие не выполняется. Чтобы сделать поток на стороне хоста неактивным, программа должна после соединения сама явным образом инициировать принятие. Если явное принятие не будет выполнено, для потока начинается отсчет срока бездействия.
Предлагаемый обходной прием - переписать программу так, чтобы она выполняла явное принятие, когда поток после соединения бездействует.
[ Начало страницы |Страница назад | Страница вперед | Содержание ]