Help, I'm losing data?


Here are the possible reasons:

1. You are not commiting transactions. Symptom is that everything seems to be there (even for days) until user closes the application once. After that, a lot of data seems lost - rightfully so, as it has gone into the void.

2. You are not using forced writes. When forced writes are not enabled, it is left to operating system to write the changes from filesystem cache to the disk when it decides it is reasonable (this improves performance, but increases risk of lost data). If can easily happen (esp. with some earlier Windows versions) that your data never gets to the disk drive.

3. You lost some data on Linux? On Linux, the filesystem behaves differently than on Windows and many newcomers are completely unaware of the following issue: you can freely delete or move the database file open by Firebird server (or any other process). It will keep running without noticing and still be writing at the old file - even if it's 'officially' deleted. Example, you have a database file in:

/dbases/database.fdb

You connect to it and do some SELECTs, etc. Then you log in as root user and move the file to /dbases/old.fdb. The connection still works and you can select, insert, update, and do whatever you want.

Now, we can create a new database (or move some other file) to /dbases/database.fdb. A new user can come in and establish connection. The old one would still be working as if nothing changed. All this time you get absolutely no errors from either Firebird or your applications. It's a disaster waiting to happen.

To prevent this, make sure nobody is using the database file when you delete or rename it. Useful tools for that are fuser and lsof. Make sure you run fuser at root user, otherwise it will simply tell you whether you are using the database file - and not whether anyone is using it. The fuser command returns the PID (process ID) of the program using it and you can use 'ps ax' command to determine which process it is (probably Firebird server).

Furl  del.icio.us  co.mments  digg  YahooMyWeb 

Do you find this FAQ incorrect or incomplete? Please e-mail us what needs to be changed. To ensure quality, each change is checked by our editors (and often tested on live Firebird databases), before it enters the main FAQ database. If you desire so, the changes will be credited to your name. To learn more, visit our add content page.

If you are a commercial tool maker and your tool features a great way to handle the issue written about in this FAQ, please check out our advertisement page.



All contents are copyright © 2007-2008 FirebirdFAQ.org unless otherwise stated in the text.


Links   Firebird   News   FlameRobin   Tool reviews  
Add content   Advertise   About  
 
Newbies
SQL
Installation and setup
Backup and restore
Performance
Security
Connectivity and API
HOWTOs
Errors and error codes
Miscellaneous