Unanswered: cant connect via shared memory, only soctcp works
Hi all. Our former dba has our informix databases setup so that everything (from a user perspective) connects via soctcp. I tried to set up an alias and then a line in sqlhosts as well as the appropriate connections setting in onconfig so that I could run batch jobs on the same box that houses the database via ipcshm but the apps keep failing with a message that indicates they cannot connect to the database.
I can export the server name to a local session and use dbaccess to connect via ipcshm with no problems. I did notice that I cannot use isql in this same manner and get the same type of 'cannot connect...' failure. Anyone shed some light on this?
I am running on IDS 9.40 and the OS is AIX 5.2.
Please specify the full version number. If it is 9.40.FCx then it is a 64-bit version. In that case IDS is unsing 64-bit memory addresses. Tools like isql (and also 4gl programs) are normally 32-bit. So it is not possible to connect to the 64-bit memory with a 32-bit address.
I have been setting that variable to point at the server name associated with ipcshm in the sqlhosts file, which is relfected in the connection type parm in onconfig.
I am pretty sure I have been doing it right and dbaccess will work and run in shared memory if I export the server name. Its just my old 32-bit 4GL apps and ISQL that I am running into this with. I diescovered this week that while we are running the 64 bit version of Informix (*FC2) we are running the *UC version of the 4GL toolset which by its very generic and universal nature is 32 bit.
The admin before me was a doofus who liked to keep everything related to 'database management' secret and our programmers were never even aware of this 32 bit toolset thing until now. Its really a shame, because his secretive nature has left all our programmers hating Informix because they feel like they do not know enough about how things work to make them work better/take advantage of its strengths. I was all evil-empire myself (microsoft type) until I inherited these Informix servers, but I have come to respect its speed and ability to scale vertically instead of the usual horizontal growth I usually have to deal with in the MS world.
I am curious if I can still use the same 4gl toolset I have been using and maybe flip a switch at the C compiler end? As I understand it (which is not very well or much) the 4GL tools pass the object to the C compiler which actually creates the executable? Feel free to correct me if I am wrong, this is the understanding of things that has been passed down from our former DBA to our dev staff and now me.
I think 4GL on most platforms is still 32-bit, so just recompiling it is not an option. What we always suggest is enabling tcp/ip connections for the local 4gl. This will make the communication a little bit slower, but this is more than enough compensated with the 64-bit database technology.
I don't know if you know how to set this up but it is quite easy (just like everything else in the IT, if you know it).
Put extra extry in your /etc/services file, for example:
Put extra line in sqlhosts file
dbservertcp onsoctcp <hostname> ixport
Put extra line / adjust line in ONCONFIG:
This is just a set-up, if you need more advise please post or e-mail your onconfig and sqlhosts file.
Hope this helps,
By the way: Nice to know that MS-loving people appreciate the Informix technology