Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Which port is Informix listening?

13,580 views
Skip to first unread message

Nuno Paquete

unread,
Oct 30, 2005, 6:35:14 AM10/30/05
to
Hi group,

I need to know which port is Informix listening because I need this
information to configure an ODBC connection from Windows clients.
The Informix database I need to connect is running on an AIX machine.
When I run "netstat" command I get this information:

Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 portonova.telnet 195.23.121.26.1123
ESTABLISHED
tcp4 0 0 loopback.49213 *.* LISTEN
tcp4 0 0 loopback.smux loopback.32768
ESTABLISHED
tcp4 0 0 loopback.32768 loopback.smux
ESTABLISHED

Which port is it running? 49213 or 32768?
I know that Informix database was running on this machine at the time I got
the above information.

Thanks in advance,
Nuno Paquete


Neil Truby

unread,
Oct 30, 2005, 8:05:19 AM10/30/05
to
"Nuno Paquete" <n...@ispgaya.pt> wrote in message
news:4364b031$0$22093$a729...@news.telepac.pt...


Possibly both.

Can you send the output of:

onstat -c | grep -i server
and
cat $INFORMIXDIR/etc/sqlhosts


Fernando Nunes

unread,
Oct 31, 2005, 5:34:09 AM10/31/05
to

You need to understand how it is setup...
Each Informix instance can be listening on one or more ports (or zero,
but more on this later).

With the Informix environment setup you will have 4 environment
variables that are important for this:

1- INFORMIXSERVER - is the main name of the instance
2- INFORMIXDIR - product installation dir
3- ONCONFIG - name of the configuration file (located in
$INFORMIXDIR/etc/ the default is $INFORMIXDIR/etc/onconfig.std)
4- INFORMIXSQLHOSTS - the sqlhosts file (default if
$INFORMIXDIR/etc/sqlhosts)

You'll have to look in the $INFORMIXDIR/etc/$ONCONFIG for the lines with
SERVERNAME and DBSERVERALIAS.

The value in front of SERVERNAME is the main instance name.
The names in DBSERVERALIAS are alternatives name for the instance.
This names are mapped in the $INFORMIXSQLHOSTS file to protocols and
port names/numbers. Example:

main_instance_name onsoctcp myhost 1526

This would mean that the instance has a listening port on host "myhost"
at port 1526. You may have have other protocols beside TCP. One of them
is shared memory which means that only local clients can connect.
In this case you won't be able to connect via ODBC from a remote client.


Besides all this, if you only have one instance, and assuming it's
running Informix version 7 you can look at the oninit proceses... You'll
see one which is the parent of them all. With a tool called "lsof" you
can see which file descriptors it's using. In this list you'll see the
TCP port numbers.

Regards/Cumprimentos.

Fernando Nunes

Nuno Paquete

unread,
Nov 1, 2005, 5:12:40 AM11/1/05
to

Hi,

Now I understand a little bit more of Informix.
Here is the result of /informix/etc/sqlhosts file:
porto onipcshm portonova sqlexec
lisboa onipcshm portonova lis_sqlexec
euro onipcshm portonova euro_sqlexec

I search inside /etc/services and efectively there is a declaration of
that services (sqlexec, lis_sqlexec and euro_sqlexec), I suppose this
was appended manualy.

> You may have have other protocols beside TCP. One of them
> is shared memory which means that only local clients can connect.
> In this case you won't be able to connect via ODBC from a remote client.

I think the server is using shared memory. Do you think that I can't
access Informix database using ODBC? And is it possible to access the
database using .NET libraries?

Thanks again,
Nuno Paquete

Fernando Nunes

unread,
Nov 2, 2005, 5:27:42 AM11/2/05
to

From that sqlhosts file it clearly is using only shared memory.
In this case you won't be able to connect from a remote server
independently from the technology you use.


You would have to request the Informix admin to activate a DBSERVERALIAS
using TCP/IP. After that you can connect with ODBC, OLEDB, JDBC and
.NET (the .NET provider has a few problems, but as far as I know are
performance related (and were recently discussed here).

All the drivers you need are included in a package called Informix
Client SDK. The version should be around 2.90. I'm not really sure if it
includes the JDBC driver...

Regards.

Nuno Paquete

unread,
Nov 2, 2005, 12:20:01 PM11/2/05
to
Hi,

"You would have to request the Informix admin to activate a
DBSERVERALIAS
using TCP/IP. After that you can connect with ODBC, OLEDB, JDBC and

.NET..."

I've got root access to the system. How can I do that?
Do I have to append any line to sqlhosts file?
Can you tell me how can I activate DBSERVERALIAS?
Will this changes affect previous settings? I mean, we've got an
application that was developed by another company, that app was
develped using C language and is installed on client machines
(Windows). That application accesses an Informix database. I don't want
to affect negatively the app, because it is very important to my
company.
Now I want to develop another application (using .NET) that will use
the tables of the Informix database.
Any help would be very appreciated.

Regards,
Nuno Paquete

Tsutomu Ogiwara

unread,
Oct 31, 2005, 1:59:19 AM10/31/05
to

Hi Nuno.

onstat -g ntt is your help.

[tsutoo@urraco ~]tsutoo940uc7_tcp% onstat -g ntt

SNIP

Individual thread network information (times):
netscb thread name sid open read write address
b3d7740 tlitcplst 3 15:58:15 urraco|32470|tlitcp
b3ca740 tlitcppoll 2 15:58:15

--
Tsutomu Ogiwara from Tokyo Japan.


>From: "Nuno Paquete" <n...@ispgaya.pt>
>Reply-To: "Nuno Paquete" <n...@ispgaya.pt>
>To: inform...@iiug.org
>Subject: Which port is Informix listening?
>Date: Sun, 30 Oct 2005 11:35:14 -0000
>
>Hi group,
>
>I need to know which port is Informix listening because I need this
>information to configure an ODBC connection from Windows clients.
>The Informix database I need to connect is running on an AIX machine.
>When I run "netstat" command I get this information:
>
>Active Internet connections
>Proto Recv-Q Send-Q Local Address Foreign Address (state)
>tcp4 0 0 portonova.telnet 195.23.121.26.1123
>ESTABLISHED
>tcp4 0 0 loopback.49213 *.* LISTEN
>tcp4 0 0 loopback.smux loopback.32768
>ESTABLISHED
>tcp4 0 0 loopback.32768 loopback.smux
>ESTABLISHED
>
>Which port is it running? 49213 or 32768?
>I know that Informix database was running on this machine at the time I got
>the above information.
>
>Thanks in advance,
>Nuno Paquete

sending to informix-list

Martin Fuerderer

unread,
Oct 31, 2005, 3:00:45 AM10/31/05
to

Hi,

the listener is using port 49213 (assuming that that
number is the actual port number - usually I use
"netstat -n" or "netstat -an" to figure this out as I'm
sure that I really see the port number in that netstat
output).

[ This line of your netstat output has the "LISTEN" indicator
and it does not have a foreign address (only *.*). This
indicates that this port is used by a listener process and
it is doing just that, listening for connection requests. As
there is no active connection, but only the listening, there
is no foreign address given.

The other output line with 32768 as local address shows
an active connection, which in this case is a process
on the same machine connected. Therefore you see this
address again with the port number in the foreign address.

If someone was connected from a different machine, you'd
see only one line for the connection, but you'd see the foreign
address (like in the first line of your output).
]

Of course there can be more than one listener process
on a machine, not just from IDS, but from other software
also (like some daemon program waiting for connections).
So actually the correct way to figure out the particular
port number for a listener of IDS is to work it out from
the sqlhosts file of the particular server and using the
corresponding entry in /etc/services if necessary.

I use "netstat -an" only to verify, that a running IDS is
using a particular port number, or to verify that a port
number to be used by IDS is used by some other process
(while IDS is not running).
Unfortunately on most UNIX systems it is not possible
(or at least quite complicated) to find out which process
is using a particular port. Certainly it is not possible from
the netstat output alone.

Regards,
Martin
--
Martin Fuerderer
IBM Informix Development Munich, Germany
Information Management

Dirk Moolman

unread,
Oct 31, 2005, 7:51:13 AM10/31/05
to

You will have to trace it through your onconfig, sqlhosts, and services
file. It depends what port your DBA set it up on - it does not run on a
default port .....


-----Original Message-----
From: owner-inf...@iiug.org [mailto:owner-inf...@iiug.org]
On Behalf Of Nuno Paquete
Sent: 30 October 2005 01:35 PM
To: inform...@iiug.org
Subject: Which port is Informix listening?

Fernando Nunes

unread,
Nov 3, 2005, 9:10:53 AM11/3/05
to
Nuno Paquete wrote:
> Hi,
>
> "You would have to request the Informix admin to activate a
> DBSERVERALIAS
> using TCP/IP. After that you can connect with ODBC, OLEDB, JDBC and
> .NET..."
>
> I've got root access to the system. How can I do that?
> Do I have to append any line to sqlhosts file?
> Can you tell me how can I activate DBSERVERALIAS?

You would have to change your sqlhosts and your onconfig, and then stop
and start the instance... but read ahead...

> Will this changes affect previous settings? I mean, we've got an
> application that was developed by another company, that app was
> develped using C language and is installed on client machines
> (Windows). That application accesses an Informix database. I don't want
> to affect negatively the app, because it is very important to my
> company.

If you have clients accessing the database remotely than you must have a
listener on a TCP port. And your sqlhosts file must have more then
you've show. Are you sure you're looking at the correct sqlhosts file?
Don't you have the INFORMIXSQLHOSTS variable pointing to another file?

> Now I want to develop another application (using .NET) that will use
> the tables of the Informix database.
> Any help would be very appreciated.

All this changes are easier to make, but if you're not used to do it,
you can make a mistake that could harm your environment. And I don't
feel confortable "teaching" you, because I may overlook something and
this together with your lack of knowledge in the Informix environment
can cause troubles... You should get help from someone with access to
the environment.

Besides this, everything I've written assumes you're using Informix
Dynamic Server 7, 9 or 10. If you're using other IBM informix database
the scenario can change.

Regards.

0 new messages