Question
Larry Faraci · Jun 18, 2018

CACHE.DAT upgrade from Cache 2015 to Cache 2017

I have a CACHE.DAT file that is working under CACHE version 2015.1.0.429.0

I have a second machine with CACHE version 2017.2.0.741.0

When I attempt to add/use the CACHE.DAT in the new version of CACHE, it will not mount.

How do I upgrade/convert the DAT file to make it work under the new CACHE version?

Thx. Larry...

0
0 739
Discussion (7)3
Log in or sign up to continue

Did the file come from the same Operating System? Do you get an error when you try to mount it, either when you try to mount it or in the cconsole.log? 

You may want to open a WRC issue to help with this. It would also help to have the Caché SYSLOG (do ^SYSLOG from the %SYS namespace), as errors that occur while mounting files are typically at the system level, which would get logged there.

Was it the same machine?
+ a clean shutdown in 2015 ? 

Mounting your DB from Terminal "%SYS" may give you a better error message.

%SYS>d ^DATABASE
 
 1) Create a database
 2) Edit a database
 3) List databases
 4) Delete a database
 5) Mount a database
 6) Dismount a database
 7) Compact globals in a database
 8) Show free space for a database
 9) Show details for a database
10) Recreate a database
11) Manage database encryption
12) Return unused space for a database
13) Compact free space in a database
14) Defragment globals in a database
 

Both machines are on Windows 10

OK, that should be fine then. I thought maybe you were having an issue with an endian-ness change of the platform, but obviously that's not it. I'd again suggest opening a WRC issue. Try following Robert's suggestion, then collecting the cconsole.log and SYSLOG along with any error output you get from mounting. You could also post it here if you prefer.

Alongside the CACHE.DAT file is there a cache.lck file? If so, this could be preventing the new Cache instance from mounting the CACHE.DAT file by indicating that the database is currently mounted by another instance.

It could still mount read-only if cache.lck was the problem. 

Well, there is mostly only one reason, why you can't mount your database and this issue mostly happens when anybody tries to migrate between different versions on different machines. And it is different localization settings. Like, your database uses some national global collation, and you try to copy it to the instance with different settings, where this collation does not supported. You should find mention about  wrong collation in cconsole.log. So, then, you should set the same NLS, as in the first system and try to mount again.

Another possible reason is different blocksize in the Database. By default Caché uses 8KB blocks, but it is possible to have different block size, and instance should be configured for this particular blocksize, as well. cconsole.log should also contain error in this case.

Some other issues, which you can face, but they do not prevent database to be mounted.

  • 8-bit or Unicode, when you install Caché you still able to choose it, when Ensemble, HealthShare, and IRIS is Unicode only. In this case, if your data not in English, possible data should be converted from 8-bit codepage to Unicde.
  • cache.lck file next to CACHE.DAT, it is a lock file, prevents to mount database with exclusive access. But Database in this case should be mounted in read-only mode.