IBM Support

When connecting to your database you may receive SQL30081N in DB2 LUW V9.1 and up, after recently adding partitions to the instance.

Troubleshooting


Problem

After successfully adding partitions to your DB2 instance you may receive a SQL30081N error when you try to connect remotely.

Symptom

[IBM][CLI Driver] SQL30081N A communication error has been detected.  Communication protocol being used: "TCP/IP".  Communication API being used: "SOCKETS".  Location where the error was detected: "<IP_address>".  Communication function detecting the error: "recv".  Protocol specific error code(s): "*", "*", "0".  SQLSTATE=08001

And you'll likely see an error in the db2diag.log at the time that looks like:

2009-05-05-15.44.49.762680-240 I130334A350        LEVEL: Severe
PID     : 393216               TID  : 1           PROC : db2fcmr 0
INSTANCE: db2inst1               NODE : 000
FUNCTION: DB2 UDB, fast comm manager, sqkfRecvConduit::HandleAuthentEvent, probe:20
RETCODE : ZRC=0x8159006C=-2124873620=SQLKF_RECV_PARTIAL
          "FCM partial receive only"

Cause

The FCM is using all the ports defined in the /etc/services file.

Resolving The Problem

You should check your /etc/services file to see whether the ports you have defined for FCM (Fast Communication Manager) are the same as the SVCENAME defined in your database manager configuration file. The SVCENAME port should be reserved for incoming remote connections and should not overlap with any of the FCM ports.

For example, by default, when you create a new DB2 instance 4 ports in the /etc/services file will be reserved. Let's say:


    DB2_db2inst1     60005/tcp
    DB2_db2inst1_1   60006/tcp
    DB2_db2inst1_2   60007/tcp
    DB2_db2inst1_END 60008/tcp

If you have your SVCENAME set to "DB2_db2inst1" then this will cause conflicts when all of the above ports are used by the FCM. The simplest solution may be to set SVCENAME to 60005 (as not to interfere with client inbound connections) and then alter /etc/services to read:


    DB2_db2inst1     60006/tcp
    DB2_db2inst1_1   60007/tcp
    DB2_db2inst1_2   60008/tcp
    DB2_db2inst1_END 60009/tcp

*Note: You may have to define additional ports in your /etc/services file depending on the number of partitions you plan on adding.

Related Information

[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Database Objects\/Config - Instance","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"9.7;9.5;10.1;10.5","Edition":"Enterprise Server","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg21386030