We are facing an interesting problem and now we are trying to find a solution. Let me describe a situation first.
Our infrastructure is based on DB2 Enterprise Edition server, which works great. We have lots of notebook clients with an application, that can also work in kind of offline mode. For that reason, we installed DB2 Express-C and TomCat application server on those client notebooks. Computers are now able to work in offline mode and they sync as soon as they find a solid uplink.
And now the problem...
problem exists on client side. Clients are working dynamically, changing locations a lot. So, whenever they are done at one place, they physically close the computer ( put it in sleep mode or hibernation ) and after when they want to turn computer ( on some other location ) on again, DB2 Express-C and TomCat are corrupted. We usually lose all the data, which is not on the main server yet.
We are wondering, what can we do to stop the system cleanly. What kind of preventive actions could solve those problems? Any information would be greatly appreciated.
I would first try
not activating the local db
connect .. insert/update/delete.... disconnect
this would de-activate the db
IBM has a specific product for this (I believe) db2 anywhere/anyplace that works locally and replicates modifications whenever connected
Best Regards, Guy Przytula
Database Software Consultant
Good DBAs are not formed in a week or a month. They are created little by little, day by day. Protracted and patient effort is needed to develop good DBAs.
Spoon feeding : To treat (another) in a way that discourages independent thought or action, as by overindulgence.
DB2 UDB LUW Certified V7-V8-V9-V9.7-V10.1-V10.5 DB Admin - Advanced DBA -Dprop..
Information Server Datastage Certified http://www.infocura.be
For now, we are thinking about modifying our application to write important data on the filesystem as well. So in case something goes terribly wrong with the database, we always have a copy of our data on the HDD. The only weakness is the HDD itself. Once the data is on the server, regular backups take care of it.
We made some tests on the databases and we successfully crashed all of them. We were trying to simulate our agents careless behavior when working with the computers, like:
- putting computer in sleep/hibernation mode at random times
- putting computer in sleep/hibernation mode when updating core application tables
- cutting the power supply when updating core application tables
- restarting the database while in recovery
The reason why we use client database is, that we can not afford to put all the data in some kind of cache when reading. That data is not problematic, we can get it from the server in case of corruption. But we can not afford to lose customer data.
I know those are quite nasty tests and the server software is (probably) not meant to be used that way.. but our company took those decisions a while ago and now we have to make some tests and write a report.
On clients we are using MS Win7 with DB2 Express-C 9.7, server is on IBM HOST system with AiX OS and DB2 ESE 9.7.