Moving the IBM Informix IFMXDATA directory to another machine

importinformix

I'm a total newbie when it comes to Informix DBs, and I'm stuck with what looks like files that contain an Informix database. I'd like to know if it's possible to add or import these files into an existing installation of Informix.

Probably I should explain myself a bit better so…I have the following Dir\File structure:

C:\IFMXDATA\somename\dbditte_dat.000
C:\IFMXDATA\somename\dbditte_dat.001
C:\IFMXDATA\somename\dbimage_dat.000
C:\IFMXDATA\somename\dbtemp_dat.000
C:\IFMXDATA\somename\llogdbs_dat.000
C:\IFMXDATA\somename\llogdbs_dat.001
C:\IFMXDATA\somename\rootdbs_dat.000

The destination machine is running a much newer Informix version (v12.0), which, I guess, won't make this any easier.
These files are pretty large (500Mb – 2Gb) and, I hope, contain data from an Informix 3.85 installation made quite some time ago. These files is all I have, to restore this DB on another machine.
I already tried by simply replacing them on the destination computer, which didn't work, because the rootsdb_dat file gets overwritten, and I guess it's where the info about tables, and so on, is stored.

After prolonged google-ing I was unable to find information about how I could achieve this, obviously any sane person would export the data properly and then re-import it, which, sadly is not an option right now.

All I need is to access the data, I don't care if the DB name or connection method changes.
Is there any way to import the tables from these files?
Any way to fool the Informix installation into accepting these files?

EDIT
When I try to replace newly generated files on the destination machine with those from the source machine (those that I need), the Informix service crashes and the log states:

17:55:31  Assert Warning: I/O bad request chunk 1, pagenum 87248, pagecnt 1
17:55:31  IBM Informix Dynamic Server Version 12.10.TC3DE
17:55:31   Who: Session(1, informix@WDKGPMOTORS, 0, 00000000)
        Thread(7, main_loop(), 0, 1)
        File: rsbuff.c Line: 5721
17:55:31   Action: Please notify IBM Informix Technical Support.
17:55:31  stack trace for pid 3692 written to C:\PROGRA~1\IBMINF~2\tmp\af.3efbef3
17:55:32   See Also: C:\PROGRA~1\IBMINF~2\tmp\af.3efbef3
17:55:34  I/O bad request chunk 1, pagenum 87248, pagecnt 1
17:55:35  oninit: Fatal error in shared memory initialization

When I try to run oninit -v i get:

Initializing log/checkpoint information...FAILED
oninit: Fatal error in shared memory initialization

Thank you!

Best Answer

  • First, make sure this chunks/datafiles are from Windows OS too. Isn't compatible read a datafile froma different plataform (windows VS Unix VS Linux)

You cannot just move the chunks/datafiles and expected the engine just re-adapt to new path. There internal pointers at theirs configurations where the path is saved and need some administration steps to change.
Basically , you can do this only at a Backup / Restore, using ontape or onbar utilities.

Copying the files can be considered like a cold backup and this way is possible to rename the path.

For that you will need to use the ontape -p -e -rename ... command. More details, check the manual online .

If your datafiles is from older version which is installed at the target server, I'm not sure if this restore will work because you are doing a upgrade at same time...

Maybe you need install the same version of the engine used to copy the files, restore them with ontape , shutdown the engine, install the new version and upgrade ...