Enabling DRDA on Informix

Official Content
This documentation is valid for:

Since version 11.x, Informix supports the DRDA protocol. If you plan to connect to Informix using GeneXus .NET Generator you must enable DRDA support as described in IBM Informix Developer's Handbook.

Here is an example for Linux:

1. Edit the sqlhosts file specified in the $INFORMIXSQLHOSTS (or  $SQLHOSTS) environment variable, for example /opt/informix/etc/sqlhosts, and add a line for DRDA (drsoctcp):

#dbservername    nettype       hostname      servicename      options
informixfullgx   onsoctcp   informix
informix_drda    drsoctcp   informix_drda


2. Edit the Informix Server configuration file located in the etc directory to include the new database definition as an alias. You can use the environment variable $ONCONFIG to access this file, e.i. $INFORMIXDIR/etc/$ONCONFIG  for example /opt/informix/etc/onconfig:

DBSERVERNAME    informixfullgx


3. Edit /etc/services and specify the port:

informix        9088/tcp # Informix server
informix_drda   9094/tcp # Informix server drda


4. Restart Informix Server for these changes to take effect. And set Server TCP/IP Port property in DataStore with the value 9094.


Note: If the application throws the error


ERROR 08001 IBM SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "". Communication function detecting the error: "connect". Protocol specific error code(s): "10060", "*", "*". SQLSTATE=08001

Make sure the firewall on Linux allows the port used by DRDA. In the example 9094.



Example of configuring the firewall to allow port 9094:

root@fullgxinformix12 ~# firewall-cmd --list-ports
root@fullgxinformix12 ~# firewall-cmd --add-port 9094/tcp
root@fullgxinformix12 ~# firewall-cmd --list-ports
9088/tcp 9094/tcp
root@fullgxinformix12 ~# firewall-cmd --permanent --add-port 9088/tcp
Warning: ALREADY_ENABLED: 9088:tcp
root@fullgxinformix12 ~# systemctl stop firewalld
root@fullgxinformix12 ~# systemctl start firewalld
root@fullgxinformix12 ~# firewall-cmd --list-ports
9088/tcp 9094/tcp