Known problems and workarounds

Exporting to an IXF file with indexes on columns containing - and + characters

When the export command is issued with a IXF file format and a SELECT * clause, index information is collected, if applicable.

Problem

If the column names specified in the index contain - or + characters, the index information will not be collected and you will receive SQL code SQL27984W. The export will complete and the data being exported will not be affected. However, the index information will not be saved in the IXF file.

Workaround

If you will be recreating the table using the import command with the CREATE parameter, the indexes will not be recreated. To create the indexes separately, use the db2look utility.

CLI0116E or SQL0428N error when calling the db2ReadLog API

Problem

Calling the db2ReadLog API from an application can result in an error when the application disconnects from the database if a commit or rollback is not performed before the disconnect:

Workaround 1

For non-embedded SQL applications, set autocommit mode on before calling the db2ReadLog API.

Workaround 2

Issue a COMMIT or ROLLBACK statement after calling the db2ReadLog API and before disconnecting from the database.

The "db2gcf -k" command fails on DB2 UDB Workgroup Server Edition

Problem

The db2gcf command starts, stops, or monitors a DB2 Universal Database (UDB) instance, usually from an automated script, such as in an HA (high availability) cluster.

Using the db2gcf system command with the -k parameter on DB2 UDB Workgroup Server will fail.

Workaround

The "db2gcf -k" command works only on DB2 UDB Enterprise Server Edition and not on DB2 UDB Workgroup Server Edition.

SQL1224 error from DRDA wrapper (AIX)

If a 32-bit DB2 Universal Database (UDB) server is run on an AIX system and an application running on the same system has more than one local database connection through the DRDA wrapper, then the application might get the following error:

SQL1822N  Unexpected error code "-1224" received from 
data source "W3_SERVER2". 
Associated text and tokens are 
  func="DriverConnect" 
  msg="SQL1224N  A database agent could not be started to 
                 service a request, or was terminated as 
                 a result of a database system shutdown 
                 or a force command. "
SQLSTATE=560BD

To avoid this error, put the following entry in the federated configuration file (instance_directory/cfg/db2dj.ini):

EXTSHM=ON
Note:
When you add entries to the federated configuration file, you must stop and restart DB2 UDB for the changes to take effect.

Alternately, you can catalog the local DB2 UDB database as being on a TCP/IP node. For example:

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');

Hotkeys not working in Microsoft Visual Studio .NET Framework 1.1

If your hotkeys are not working in Microsoft Visual Studio .NET Framework 1.1, you can download a hotfix from the Microsoft Web site. You can find the hotfix in the Microsoft Knowledge Base, article Q836745.

The simplified Chinese locale (AIX)

AIX has changed the code set bound to the simplified Chinese locale Zh_CN on:

The code set has been changed from GBK (code page 1386) to GB18030 (code page 5488 or 1392). Since DB2 Universal Database (UDB) for AIX supports the GBK code set natively and the GB18030 code set via Unicode, DB2 UDB will default the Zh_CN locale's code set to ISO 8859-1 (code page 819), and in some operations will also default the locale's territory to the United States (US).

To work around this limitation, you have two options:

If you choose to use the first option, issue the following commands:

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

If you choose to use the second option, change your locale from Zh_CN to either ZH_CN or zh_CN. The ZH_CN locale's code set is Unicode (UTF-8), while the zh_CN locale's code set is eucCN (code page 1383).

The simplified Chinese locale (Red Hat Linux)

Red Hat Version 8 and later (including Red Hat Enterprise Linux [RHEL] versions 2.1 and 3) have changed the default code set for simplified Chinese from GBK (code page 1386) to GB18030 (code page 5488 or 1392).

Since DB2 Universal Database (UDB) for Linux supports the GBK code set natively and the GB18030 code set via Unicode, DB2 UDB will default its code set to ISO 8859-1 (code page 819), and in some operations will also default its territory to the United States (US).

To work around this limitation, you have two options:

If you choose to use the first option, issue the following commands:

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

If you choose to use the second option, issue any one of the following commands:

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

where the code set associated with zh_CN is eucCN or code page 1383, and with zh_CN.utf8 is code page 1208.

Merant Driver Manager incompatibility (UNIX)

There are incompatibilities with Unicode support when the Merant Driver Manager accesses the DB2 ODBC driver on UNIX. These incompatibilities cause the Merant Driver Manager to use Unicode even if the application did not request Unicode use. This situation can lead to problems with components such as the Data Warehouse Center, Information Catalog Manager, and MQSI, which require the Merant Driver Manager to support non-IBM data sources. You can use an alternate DB2 ODBC driver library without Unicode support enabled until a permanent solution is available.

An alternative DB2 ODBC driver library without Unicode support enabled is included with DB2 Universal Database (UDB) Version 8.1 for AIX, HP-UX, and Solaris Operating Environment. To use this alternative library, you must create a copy of it, giving the copy the original DB2 ODBC driver library's name.

Note:
The alternative (_36) library contains the Unicode functions required by the DB2 JDBC driver. Using this library allows JDBC applications, including WebSphere Application Server, to work successfully with DB2 UDB.

To switch to the non-Unicode ODBC library on AIX, HP-UX, or the Solaris Operating Environment, see the following instructions. Because this is a manual process, you must carry it out every time you update your product, including after the application of successive FixPaks or modification levels.

Procedure

AIX

To create the alternate library on AIX:

  1. As the instance owner, shut down all database instances using the db2stop force command.
  2. Using the DB2 administration server (DAS) instance ID, shut down the DAS instance using the db2admin stop force command.
  3. Back up the original db2.o file in the /usr/lpp/db2_81/lib directory.
  4. Using root authority, issue the slibclean command.
  5. Copy file db2_36.o to backup file db2.o, ensuring that ownership and permissions remain consistent. Use the following commands:
    cp db2_36.o db2.o
    -r--r--r-- bin:bin for db2.o

To switch back to the original object, follow the same procedure using the backup file instead of the db2_36.o file.

Solaris Operating Environment

To create the alternate library in a Solaris Operating Environment:

  1. As the instance owner, shut down all database instances using the db2stop force command.
  2. Using the DB2 administration server (DAS) instance ID, shut down the DAS instance using the db2admin stop force command.
  3. Back up the original libdb2.so.1 file in the /opt/IBMdb2/V8.1/lib directory.
  4. Copy file libdb2_36.so.1 to backup file libdb2.so.1, ensuring that ownership and permissions remain consistent. Use the following commands:
    cp libdb2_36.so.1 libdb2.so.1 
    -r-xr-xr-x bin:bin libdb2.so.1
  5. Issue the db2iupdt <instance> command for each database instance and the dasupdt <das_instance> command for the DAS instance.

To switch back to the original object, follow the same procedure using the backup file instead of the libdb2_36.so.1 file.

HP-UX PA-RISC

To create the alternate library on HP-UX PA-RISC:

  1. Shut down all database instances using the db2stop force command.
  2. Shut down the DB2 administration server (DAS) instance using the db2admin stop force command.
  3. Back up the original libdb2.sl file in the /opt/IBMdb2/V8.1/lib directory.
  4. Copy file libdb2_36.sl to backup file libdb2.sl, ensuring that the ownership and permissions remain consistent. Use the following command to ensure the consistency:
    cp libdb2_36.sl libdb2.sl
    -r-xr-xr-x bin:bin for libdb2.sl
  5. Issue the db2iupdt <instance> command for each database instance and the dasupdt <das_instance> command for the DAS instance.

To switch back to the original object, follow the same procedure using the backup file instead of the libdb2_36.sl file.

HP-UX on IA64

To create the alternate library on HP-UX on IA64:

  1. Shut down all database instances using the db2stop force command.
  2. Shut down the DB2 administration server (DAS) instance using the db2admin stop force command.
  3. Back up the original libdb2.so file in the /opt/IBMdb2/V8.1/lib directory.
  4. Copy file libdb2_36.so to backup file libdb2.so, ensuring that the ownership and permissions remain consistent. Use the following command to ensure the consistency:
    cp libdb2_36.so libdb2.so
    -r-xr-xr-x bin:bin for libdb2.so
  5. Issue the db2iupdt <instance> command for each database instance and the dasupdt <das_instance> command for the DAS instance.

To switch back to the original object, follow the same procedure using the backup file instead of the libdb2_36.so file.

Other UNIX Operating Systems

Contact IBM Support if you require assistance with DB2 UDB and the Merant Driver Manager on other UNIX operating systems.

NFS APAR IY32512 - Unavailable threads (AIX)

AIX 5 NFS APAR IY32512 might cause the db2stop command to fail on systems with a large number of partitions.

On a server that is receiving large numbers of requests for blocking locks on files that are already locked, the lock daemon might become unresponsive. This situation occurs when all available locked threads are allocated to threads that are waiting for the locks to become available, so there is no thread available to pick up the work when the unlock request is made.

When this situation occurs the stopped nodes must be restarted. There is a DB2 Universal Database workaround for this situation by stopping the nodes one at a time using the NODENUM option of the db2stop command.

SQLFLAG (STD) precompiler option error

If the SQLFLAG(STD) precompile option is enabled, it will cause the following error: Abend C6 occurred while running Precompile program DSNHPC

Remove the SQLFLAG (STD) precompile option when using the Development Center to create SQL stored procedures to run on DB2 Universal Database for z/OS, Version 8.

Connection pooling must be enabled when using Sysplex in DB2 Connect

Problem

DB2 Connect(TM) doesn't route connections to another member of a Distributed Data Facility (DDF) when the connecting member of the DDF in the data-sharing group on OS390 has been shutdown. With Sysplex enabled, DB2 Connect(TM) routes connections to another member in DDF according to the server list.

The DB2 Connect Version 8 Sysplex was designed with agent pooling in mind. The Sysplex server list is freed if there are no agents and no connections to a database. Therefore, at least one agent must be kept to maintain the Sysplex server list.

Workaround

Enable connection pooling by running the following commands:

db2 update dbm cfg using num_poolagents number
db2stop
db2start

where number is the maximum number of agents allowed to be pooled on the DB2 instance. Connection pooling is enabled when number is greater than 0.

Recommendation

Set num_poolagents to -1, which resolves to half of the value assigned to the maxagents configuration parameter

DB2 Connect Custom Advisor

Despite being documented in the DB2 Connect User's Guide, the DB2 Connect Custom Advisor is no longer supported in Version 8.2.

Tools catalog database creation fails (HP-UX)

Problem
When installing DB2 Universal Database (UDB) Version 8.2 on HP-UX, the CREATE TOOLS CATALOG command fails with SQLCODE -22209 if it runs under a 32-bit instance and the DB2 Administration Server jdk_path configuration parameter points to the HP-UX SDK 1.4. The failure occurs because DB2 UDB Version 8.2 installs the HP-UX SDK 1.4 by default but the Version 8.2 32-bit instance requires the HP-UX SDK 1.3 to run the CREATE TOOLS CATALOG command successfully.

This failure can also occur when installing DB2 UDB Version 8.1 FixPak 7 if you manually updated the DB2 Administration Server jdk_path configuration parameter to point to the HP-UX SDK 1.4, or if you dropped and recreated the DB2 Administration Server (DAS). The failure occurs because, in either of these cases, the jdk_path configuration parameter changed to point to the HP-UX SDK 1.4.

A DB2 UDB Version 8.2 32-bit instance requires HP-UX SDK 1.3 to run successfully.

Workaround 1
Create the tools catalog under a 64-bit instance.
Workaround 2
Create the tools catalog under a 32-bit instance by performing the following steps:
  1. Download the HP-UX SDK 1.3 from the HP-UX Web site: http://www.hp.com/products1/unix/java/
  2. Install the HP-UX SDK 1.3.
  3. Update the DB2 Administration Server jdk_path configuration parameter to point to the HP-UX SDK 1.3. For example:
    db2 update admin config using JDK_PATH /opt/java1.3
  4. Restart the DB2 Administration Server.
    db2admin stop
    db2admin start
  5. Re-run the CREATE TOOLS CATALOG command under the 32-bit instance.

Displaying Indic characters in the DB2 GUI tools

If you have problems displaying Indic characters when using the DB2 GUI tools, you might not have the required fonts installed on your system.

DB2 Universal Database (UDB) has packaged the following IBM TrueType and OpenType proportional Indic language fonts for your use. You can find these fonts in the font directory on any of the following CDs:

These fonts are to be used only in conjunction with DB2 UDB. You cannot engage in the general or unrestricted sale or distribution of these fonts:

Table 9. Indic fonts packaged with DB2 UDB
Typeface Weight Font File Name
Devanagari MT for IBM Medium devamt.ttf
Devanagari MT for IBM Bold devamtb.ttf
Tamil Medium TamilMT.ttf
Tamil Bold TamilMTB.ttf
Telugu Medium TeluguMT.ttf
Telugu Bold TeleguMTB.ttf

Detailed instructions on how to install the fonts and modify the font.properties file can be found in the Internationalization section of the IBM Development Kit for Java documentation.

In addition, the following Microsoft products come with Indic fonts that can be used with DB2 GUI tools:

GUI tools are not supported for zSeries servers (Linux)

With the exception of the DB2 Setup wizard, the GUI tools will not work on zSeries servers running the Linux operating system. This limitation includes any items normally launched from the Installation launchpad, such as the Quick Tour.

If you want to use the GUI tools with one of these systems, install the administrative tools on a client system with a different system configuration, and use this client to connect to your zSeries server.

Enclose DB2 Information Center search terms within quotation marks if they contain numbers

To get accurate search results in the DB2 Information Center you must enclose search terms that include numbers within quotation marks.

For example, if you search for the following term you will receive no results:

  1.4.1

However, if you enclose the term within quotation marks, you receive the appropriate results:

  "1.4.1"

A search for the following term will return extra topics:

  DB20000I

But a search on the following term works properly:

  "DB20000I"

Information Catalog Center log file not generated when importing tag language files

If an Information Catalog Center log file is not generated when you import tag language files to the Information Catalog Center, perform the following troubleshooting steps:

When running db2icmimport from a command line:
When importing tag language files using the Information Catalog Center GUI:

Binding Query Patroller packages

If the Query Patroller packages are not bound after applying a fixpak, a user without DBADM authority or proper Query Patroller privileges can encounter the following error when using the Query Patroller Center or Query Patroller command line:

SQL0001N - Binding or precompilation did not complete successfully.

If you are using the Query Patroller Center, the SQL0001N error is logged in qpdiag.log file. If you are using the Query Patroller command line, the SQL0001N is returned to the console

Auto-bind code exists to initiate automatic binding. However, the automatic binding fails when the connecting user does not have the necessary privileges to execute all statements in the Query Patroller packages. A symptom of this problem is missing folders in the Query Patroller Center.

To avoid this problem, the qpserver.lst packages should be bound manually by a user with DBADM authority or necessary privileges after applying a fixpak.

Unavailability of ports with Query Patroller (Windows)

Problem

Submitted queries in Query Patroller might receive SQL code -29007 when there are no more available ports on Windows XP or Windows 2003. The likelihood of this error increases with an increasing number of clients accessing Query Patroller.

Workaround

Set the following Windows registry variables:

   MaxUserPort=65534
   TcpTimedWaitDelay=30 

and restart your system for the changes to take effect.

Details about setting Windows registry variables can be found at the Microsoft(R) Help and Support website at http://support.microsoft.com/.

Secure environments (Windows)

You might experience file permission problems if you are using DB2 Universal Database (UDB) on Windows and are not an administrator on the Windows system. If you receive an SQL1035N, SQL1652N, or SQL5005C error message, possible causes and workarounds are shown in the following information:

User does not have sufficient authority on the sqllib directory

Problem
User receives an SQL1035N or SQL1652N error when trying to open the DB2 CLP or command window. The DB2 UDB code (core files) are installed into a directory structure where write privileges are limited, but some DB2 UDB tools need to write and create files in the DB2INSTPROF directory.
Workaround
Create a new directory where you can grant users, at minimum, the MODIFY permission and use either db2set -g db2tempdir to point to the new directory, or set the db2tempdir variable in the Windows system environment.
User does not have sufficient authority to write to the sqllib\<instance_dir> directory even though user belongs to SYSADM_GROUP

Problem
User receives an SQL5005C system error when trying to update the database manager configuration file (update dbm cfg). The user does not have the required NTFS permissions to write to the sqllib\instance_dir directory even though you have added this user to the SYSADM_GROUP.
First workaround

Grant the users, at minimum, the MODIFY permission on the instance_dir directory at the file system level.

Second workaround
Create a new directory where you can grant the user, at minimum, the MODIFY permission. Use the db2set db2instprof command to point to the new directory. You will need either to recreate the instance so that the information is stored under the new instance directory specified by db2instprof, or you will need to move the old instance directory to the new directory.

XML Extender sample programs renamed

Some XML Extender sample programs might have the same name as other installed programs. Accidentally invoking another program with the same name as an XML Extender sample program can damage your XML files. The following list shows the old XML Extender sample program names as well as new replacement program names that are less likely to cause conflicts. Make sure you use the new sample program names instead of the old ones to prevent damaging your XML files.

Table 10. Replacement sample programs for XML Extender (Windows)
Old Program (Do not use) New Program (Use)
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
Table 11. Replacement sample programs for XML Extender (Linux and UNIX)
Old Program (Do not use) New Program (Use)
insertx dxxisrt
retrieve dxxretr
retrieve2 dxxretr2
retrievec dxxretrc
shred dxxshrd
tests2x dxxgenx
tests2xb dxxgenxb
tests2xc dxxgenxc

Using the new sample programs with the sample sqx files

The source code (.sqx files) for the executables listed previously are located in the samples\db2xml\c directory of your installation. The source files are still labeled with their old names. If you make changes to the source code, copy your newly compiled executables (with the old names) to the sqllib\bin directory.

On Windows platforms, you must make an additional copy, rename it with its new name above, and copy it to the bin directory. Both copies replace the existing files in the bin directory. For example, after compiling your new version of shred.exe, you need to make two copies and replace the files in the bin directory: one labeled shred.exe and the other renamed dxxshrd.exe.

On Linux and UNIX platforms, you need only to replace the file with the old name with your newly compiled version. If you create new executable files from these samples, you must copy the new files from the \SQLLIB\samples\db2xml\c\ directory into the \SQLLIB\bin\ directory, and then make an additional copy, renaming them according to the previous table.

Decomposing documents in XML Extender that contain non unique attribute and element names

You can now decompose documents that contain non-unique attributes or non-unique element names that map to different columns (of the same or different tables) without receiving the DXXQ045E error. The following is an example of an XML document with non-unique attributes and non-unique element names:

<Order ID="0001-6789">
       <!-- Note: attribute name ID is non-unique -->
       <Customer ID="1111">
                    <Name>John Smith</Name>
       </Customer>
       <!-- Note: element name Name is non_unique -->
       <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>

The accompanying DAD, which maps the duplicate elements and attributes to different columns, looks like this:

<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>

  <!--attribute ID duplicated below, but mapped to a different col-->
  <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">
    <!--attribute ID duplicated above, but mapped to a different col-->
    <attribute_node name="ID">
      <RDB_node>
        <table name="order_tab" />
        <column name="cust_id" type="integer"/>
      </RDB_node>
    </attribute_node>

    <!--element name duplicated below, but mapped to a different col-->
    <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">
    <!--attribute ID duplicated above, but mapped to a different col-->
    <attribute_node name="ID">
      <RDB_node>
        <table name="order_tab" />
        <column name="salesp_id" type="integer"/>
      </RDB_node>
    </attribute_node>
          
    <!--element name duplicated above, but mapped to a different col--> 
    <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>

The contents of the tables would look like the following sample after the preceding document is decomposed:

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
Note:
To map multiple elements and attributes to the same column of the same table, define an alias for the table and use the alias in the DAD <table> element of one of the mappings.

Differences between SNA and TCP/IP when using DB2 Connect

When connecting to an OS/390 system using SNA, the host VTAM layer automatically flows a commit when a new connection is made. The automatic commit allows the host side thread state to be inactive, and the thread immediately becomes inactive.

However, when connecting to an OS/390 system using TCP/IP, there is no automatic commit. The application itself must flow an explicit commit after the connection to allow the thread to be inactive on the host. Without the explicit commit, the thread is subject to an idle thread time out.

The suggested workaround is to rewrite the application so that it will perform an explicit commit if the connection goes idle after the connection.

[ Top of page |Previous page | Next page | Contents ]