In pre-6 versions of InterBase it was a limitation of possible transactions quantity which database can perform in the single backup and restore cycle.
The critical number of transactions depends on page size, and has the following values:
| Database page size | Critical number of transactions |
| 1024 byte | 131 596 287 |
| 2048 byte | 265 814 016 |
| 4096 byte | 534 249 472 |
| 8192 byte | 1 071 120 384 |
How to fix this error?
For this you need to install modern version of engine (we recommend Firebird 1.0.x or Firebird 1.5.x). Install it as application to make further actions easier.
After that copy gbak.exe from old InterBase installation to the Bin directory of Firebird, to the name gbak5.exe (for instance).
Then run fbserver.exe as application (command line is "Fbserver.exe -a") and perform backup of corrupted database using (this is a key thing) gbak5.exe:
gbak5.exe -b -g -v -ig -user SYSDBA -pass masterkey Disk:\Path\corrupted.gdb Disk:\Path\backup5.gbk
where Disk:\Path\corrupted.gdb and Disk:\Path\backup5.gbk are appropriate paths to corrupted database and backup file (to be created).
As a result, new engine will open and read database without errors and old gbak5.exe will store data of your database to InterBase 5.x-compatible format (or older).
After that shutdown Firebird (you can remove it now actually) and start InterBase 5 (or older if you have older), and run restore process from its Bin directory using regular gbak.exe from your original version:
gbak.exe -c -v -user SYSDBA -pass masterkey Disk:\Path\backup5.gbk Disk:\Path\good.gdb
That's all, you have healthy database.
Possible complications
Some data (especially most recent records) can be lost during this operation, or additional action may be required to recover transactions pages.
If you have any issues please feel free to contact our support via support@ib-aid.com and we'll help you.
|