Subject Re: Database corruption (again) or what is wrong with Firebird.
Author HKlemt
--- In, "thisllub" <thisllub@...> wrote:
> A single corruption makes that a false statement. The cause of the
> corruption is irrelevant. Any database is corruptible.The fact that
> corruption can be undetected and virtually unrecoverable is the problem.

From my point of view all current firebird versions are very stable,
but there are some database repair jobs from time to time that we do
for our customers (this year there were 2 corrupt databases until now,
but both from one software company). Real reasons are not so easy to
reproduce, but in one case it was a full harddisk on a windows server
that was resetted at a very bad time.

Since we know that customers like you have sometimes already a problem
when one record is lost, we have implemented some internal structure
inside the customer database, that creates a kind of transactionlog
based on automatic generated triggers. Based on firebirds Events, they
are transmitted to one or more server in almost real time right after
the transaction is committed. We use our ibeblock scripting language
to do the transfer, but any other language can be used, that is able
to copy a record from one database to another and is able to react on

Some basics of this concept and a demo database is available here for
in our public download area

This technology is used in several customer projects, for example
german press agency, which would have a very big problem when their
Firebird Server becomes unavailable in the early afternoon, because it
is the major source for a lot of german newspapers, who need the
stories in time before starting their printing machines. So they
decided to have a replicated server and as far as i know, it was used
only once in the last 6 years, because of a ram error in the main
server. We have also implemented this for other companies and it
simplpy works and can be used for different tasks (clustering,
online/offline replication, laptop replication, etc.). Internally it
uses pure Firebird technology, but it has some requirements in the
database model, but this can also be added on an existing database.

btw: we found that sometimes it helps to rebuild a database completly
and not only do a backup and restore, since in a backup/restore
process, the objects are not recompiled, so sometimes you find invalid
sourcecode in the database, even if it does its job based on the blr
code. This operation can be done in ibexpert in two simple operations
(extract metadata with data and blobs to a script and execute it
again). This gives you a guarantee that the new database is created
only based on valid SQL Statements of the current firebird version. if
you like, you can do the same job with other tools, but you definitly
need more time and a lot of workarounds.