Mixing flavors of Informix
Posted in 2004
Topics: Installation, Setup & Upgrades, Stored Procedures & SPL, Connectivity: ESQL/C, 4GL & Embedded SQL, Networking & sqlhosts Configuration
We're in the process of upgrading the following in order to get into a configuration that is expandable, more current and supported: IDS: 7.31 to 9.40 SQL & 4GL: 7.22 to 7.32 AIX: 4.3.2 to 5.2 Our current server can only hold 3GB of RAM and we're running into issues with that limitation now. Our new production server has 8GB of RAM and we want to run it in 64-bit mode to get access to more RAM for BUFFERS. We're having some upgrade issues with the application vendor and are looking for short-term alternatives, such as a partial upgrade. The idea being floated now is this: Continue on our development server with our current combination of OS (4.3.2), IDS (7.31) and Tools (7.22). Proceed with the upgrade of the production server to the desired levels of OS (5.2), IDS (9.40) and Tool runtimes (7.32). Copy (not compile) the code generated with the 7.22 tools to the new production server. Run the code (compiled with the 7.22 tools) on the new production server in 64-bit mode with shared memory connections (ipcshm). I've got the code copied over and the database loaded on the new server. I had to copy several Informix (version 7) libraries over to the new server as well. When I try to run the application with a shared memory connection specified in INFORMIXSERVER, the application appears to 'hang' for a few seconds and then displays the following message: Loading program...Program stopped at "main.4gl", line number 22. 4GL run-time error number -25588. The appl process cannot connect to Dynamic Server appxshm. If I change the INFORMIXSERVER to a TCP/IP connection, the application appears to work fine. I have set the server to 32-bit mode, rebooted and installed the 32-bit version of the engine. I was able to run in 32-bit mode with shared memory connections, but I am only able to set my BUFFERS to about 2GB. This does not help me out since I have that limitation already. I have a few questions: Is there any way to get this configuration to run with a shared memory connection? I am not comfortable with this configuration since it is probably not supported at all by IBM. Has anyone else tried something like this and run into problems they'd like to share? Do any IBM/Informix people have some recommendations about why this should not be done? Thanks! Bob -- bothwellno@spam.duke.edu
<bothwellno@spam.duke.edu> wrote in message news:cbpus7$auf$1@gargoyle.oit.duke.edu... > > We're in the process of upgrading the following in order to > get into a configuration that is expandable, more current > and supported: > > IDS: 7.31 to 9.40 > SQL & 4GL: 7.22 to 7.32 > AIX: 4.3.2 to 5.2 > > Our current server can only hold 3GB of RAM and we're > running into issues with that limitation now. > Our new production server has 8GB of RAM and we want to > run it in 64-bit mode to get access to more RAM for BUFFERS. > We're having some upgrade issues with the application vendor > and are looking for short-term alternatives, such as a > partial upgrade. > The idea being floated now is this: > > Continue on our development server with our current combination > of OS (4.3.2), IDS (7.31) and Tools (7.22). > > Proceed with the upgrade of the production server to the desired > levels of OS (5.2), IDS (9.40) and Tool runtimes (7.32). > Copy (not compile) the code generated with the 7.22 tools to > the new production server. 7.22 executables with 7.32 runtime? Not supported. Version used to compile must be the version used to run. > Run the code (compiled with the 7.22 tools) on the new production > server in 64-bit mode with shared memory connections (ipcshm). > > I've got the code copied over and the database loaded on the new > server. I had to copy several Informix (version 7) libraries over > to the new server as well. Probably because the runtime is not compatible. Just because a test program works does not mean it will cotinue to work or that it is supported. > When I try to run the application with a shared memory connection > specified in INFORMIXSERVER, > the application appears to 'hang' for a few seconds and then > displays the following message: > > Loading program...Program stopped at "main.4gl", line number 22. > 4GL run-time error number -25588. > The appl process cannot connect to Dynamic Server appxshm. > Yep a 32-bit runtime and a 64-bit engine so why would you think they would be compatible? > If I change the INFORMIXSERVER to a TCP/IP connection, the > application appears to work fine. > Yep. TCP/IP is a network-protocol and has no -bit level against it. > I have set the server to 32-bit mode, rebooted and installed the > 32-bit version of the engine. I was able to run in 32-bit mode > with shared memory connections, but I am only able to set my > BUFFERS to about 2GB. This does not help me out since I have > that limitation already. > > I have a few questions: > > Is there any way to get this configuration to run with a shared > memory connection? > I assume the tools versions are .UC version i.e. 32-bit. Since the server is 64-bit no this is not work. Get 64-bit tools and even then you may find that shared memory connections are not supported. Use TCP/IP instead. We have to use TCP/IP connections using 9.40.FC3 on HP-UX 11. > I am not comfortable with this configuration since it is probably > not supported at all by IBM. Has anyone else tried something like > this and run into problems they'd like to share? > > Do any IBM/Informix people have some recommendations about why > this should not be done? > 32-bit and 64-bit are not compatible do not even install them in the same $INFORMIXDIR. Use one or the other not both! > Thanks! > > Bob > > -- > bothwellno@spam.duke.edu
bothwellno@spam.duke.edu wrote: > >[SNIP scenario] tcp connections are independent of the bitsize so any bit can connect to any bit using tcp. shm connections are literally memory access, so the client (4GL, SQL etc) must be built for the size of the engine if you want to use shm connectors. As David pointed out, never mix a 32 bit and a 64 bit install in the same informixdir. If you want to use TCP connectors, you could actually install the engine into a separate $INFORMIXDIR, and just setup the tools in their own $INFORMIXDIR and configure to use TCP to talk to the engine. You need the same version of 4GL RDS in development and production. Although SOME versions have been compatible to a large degree, never count on it; also, 7.2X to 7.3X is too big a step to even dream of getting away with that. However there is a solution as you guessed. Upgrade all machines to your chosen engine and 4GL, but the development machine can stay 32 bit, and the production machine can be 64 bit. When you deliver .frm, .4go and .4gi from 4GL RDS, the PCODE is perfectly portable from platform to platform, whether it's different bit sizes or even different processors. You will have no problem with this. If it is forced upon you by circumstance, the engines can be different versions between development and production, but then you will miss out on the ability for developers to discover little buglets in an engine version before the users do. Then again, even with the same engine versions, the users will still occasionally feel something first that can be blamed on the engine.
bothwellno@spam.duke.edu wrote: > We're in the process of upgrading the following in order to > get into a configuration that is expandable, more current > and supported: > > IDS: 7.31 to 9.40 > SQL & 4GL: 7.22 to 7.32 Please double check the SQL and 4GL version numbers; the releases were 7.20, 7.30, 7.31, and 7.32 -- there never was a 7.22 I4GL or ISQL. > AIX: 4.3.2 to 5.2 Isn't 4.3.2 dead? As in unsupported by IBM? > Our current server can only hold 3GB of RAM and we're > running into issues with that limitation now. > Our new production server has 8GB of RAM and we want to > run it in 64-bit mode to get access to more RAM for BUFFERS. > We're having some upgrade issues with the application vendor > and are looking for short-term alternatives, such as a > partial upgrade. > The idea being floated now is this: > > Continue on our development server with our current combination > of OS (4.3.2), IDS (7.31) and Tools (7.22). You can do that, yes - as an interim step. > Proceed with the upgrade of the production server to the desired > levels of OS (5.2), IDS (9.40) and Tool runtimes (7.32). Sounds good. > Copy (not compile) the code generated with the 7.22 tools to > the new production server. Sounds bad. No. Don't try it. With 32-bit code, you may get away with it - with 64-bit, you will not. And to run the 7.2x tools, you would need a 7.2x environment on the new machine, thus using two separate INFORMIXDIRs, one for the old stuff, and one for the new. > Run the code (compiled with the 7.22 tools) on the new production > server in 64-bit mode with shared memory connections (ipcshm). Fugeddabartit. 32-bit code cannot talk over 64-bit olipcshm connections. > I've got the code copied over and the database loaded on the new > server. I had to copy several Informix (version 7) libraries over > to the new server as well. > When I try to run the application with a shared memory connection > specified in INFORMIXSERVER, > the application appears to 'hang' for a few seconds and then > displays the following message: Seems plausible - don't try messing 32-bit apps and 64-bit servers over shared memory. Network - OK; IPC streams (olipcstr - if supported on AIX) is OK; shared memory - no OK. > Loading program...Program stopped at "main.4gl", line number 22. > 4GL run-time error number -25588. > The appl process cannot connect to Dynamic Server appxshm. OK - can't connect. > If I change the INFORMIXSERVER to a TCP/IP connection, the > application appears to work fine. Yes; networks serialize the data and neutralize the 4-byte vs 8-byte integer differences. > I have set the server to 32-bit mode, rebooted and installed the > 32-bit version of the engine. I was able to run in 32-bit mode > with shared memory connections, but I am only able to set my > BUFFERS to about 2GB. This does not help me out since I have > that limitation already. 32-bit apps vs 32-bit servers work the same as ever. If you need more space than a 32-bit server can use, use 64-bit servers. > I have a few questions: > > Is there any way to get this configuration to run with a shared > memory connection? No. > I am not comfortable with this configuration since it is probably > not supported at all by IBM. Has anyone else tried something like > this and run into problems they'd like to share? You've found most of the available problems - about the only one you've not come up with is running 64-bit 4.3.x applications on 5.2, which, as I mentioned earlier, is certainly unreliable if it works at all. > Do any IBM/Informix people have some recommendations about why > this should not be done? It doesn't work, and is guaranteed not to work. This is usually a good reason for not doing it. -- Jonathan Leffler #include <disclaimer.h> Email: jleffler@earthlink.net, jleffler@us.ibm.com Guardian of DBD::Informix v2003.04 -- http://dbi.perl.org/
Related threads
- what's the matter with error -25588
- Re: "Network down" on fresh install
- The appl process cannot connect
- Error 25588 : IDS 7.31UD1 on Solaris8