Hi Thomas,

Thanx for your initial reply. We would really like to get to the bottom of 
this and find out what's wrong.

I still have two questions:

   1. Is there any way to know for sure a database is consistent? Eg. By 
   running Recover with -trace and -transactionLog? Will this check all 
   internal indexes etc? It is important for us to be able to identify whether 
   a database was corrupted in some way (note that that is different from 
   knowing that there is no corruption left after an export (using Recover) 
   and an import into a new DB).
   2. We have a (new) corrupted database from a machine that isn't 
   suffering from unexpected reboots (no critical errors according to the 
   Windows logs) and didn't experience an out-of-memory (that we know of)... 
   and we are looking at external factors: eg. Maybe the shadow copy (Windows 
   Restore Checkpoint) has interfered somehow with the DB, or maybe Windows 
   Restore has restored a corrupted snapshot, etc etc ... If you have any 
   ideas that we might want to check out, they are very welcome. It is a 
   customer with multiple computers, and this particular computer has had a 
   corrupted database 4 times in about two months. One of his other computers 
   had a corruption once, all other computers haven't had corruptions while 
   they are used by the same staff randomly. The DB is 8 GB in size.

Kind regards,
Rob.

Op zaterdag 27 juni 2015 13:30:34 UTC+2 schreef Thomas Mueller:
>
> Hi,
>
> I'm sorry that the risk of corruption is that big. I'm not sure what the 
> problem could be. In the past, people did report corruptions now and then, 
> but not at such a high rate as you have.
>
> I would not move to the MVStore yet, as there are known problem in case of 
> power failure (in case of re-ordered writes). I'm working on that right 
> now. There is also a known problem with corruption after out-of-memory, 
> which is fixed in the trunk but not released yet.
>
> What I would probably use the old storage format ("mv_store=false" in the 
> database URL). Whether you use the very latest 1.4.x version or 1.3.176 
> will probably not make a big difference.
>
> I would consider creating online backups regularly, but I'm not sure if 
> that's feasible in your case.
>
> Regards,
> Thomas
>
>
>
> On Friday, June 26, 2015, Rob Van Dyck <[email protected] <javascript:>> 
> wrote:
>
>> Hi,
>>
>> I work for a small company using (the latest stable) H2 in our software. 
>> Our client base is starting to grow (+-100 installations on client 
>> computers, most have DB's multiple GBs in size) and we are starting to run 
>> into more problems with broken (and sometimes worse: unrepairable) H2 DBs. 
>> Our clients use lots of different OSes (all Windows/Mac OS X) on normal 
>> commodity hardware. To give you an estimate about the failure rate: we have 
>> had about 10 broken DBs in the last 6 months.
>>
>> We currently use an embedded persistent database with default connection 
>> properties: "jdbc:h2:file:" + h2Path + ";IFEXISTS=TRUE" after which we set 
>> autocommit to false. There is only one thread connected with the DB and the 
>> database was created using the latest version stable H2 version.
>>
>> We know for sure a few instances happened a limited time after our 
>> software ran into an out-of-memory situation. We also suspect some happened 
>> after an OS-level crash which caused the computer to reboot without having 
>> a chance to shutdown properly (e.g., power failure or the user pressing the 
>> reset button).
>>
>> The data is privacy sensitive, so we are reluctant to provide it to you 
>> unless that is the only option.
>>
>> We were hoping you might be able to hint us a little bit on what we might 
>> do to avoid these issues?
>>
>> 1. We are converting our embedded persistent H2 DB to a (tcp)server 
>> started by a different process. Hoping that OOMs in our software won't make 
>> H2 corrupt since the H2 process can shutdown cleanly. Do you think this 
>> might help for OOMs?
>> 2. We are wondering whether we are missing certain properties to set on 
>> the connection? We looked at UNDO_LOG and LOG, but the default settings are 
>> already the 'safest'.
>> 3. We are using the latest stable version 1.3.176 (and use the default of 
>> its 'storage engines' called B-tree (?). I.e., we don't use MVStore). 
>> Should we consider moving to the beta version? Could that possibly have 
>> more protection against these types of failure?
>> 4. We know some instances of corruption happened in a virtualized 
>> environment (where the guest OS 'crashed'). We tried to reproduce this by 
>> running a Windows 8 guest on a Linux host, where we tried to reset and 
>> shutdown our application multiple times (10) while it was performing heavy 
>> database updates. We could not reproduce the issue. 
>> 5. One of the issues is that we cannot reliably detect issues. At one 
>> time we ran the H2 recovery tool which gave us no errors so we continued 
>> using the existing DB, but immediately afterwards this resulted in H2 
>> complaining about corruption. Is this possible (does the recovery tool 
>> check all kind of errors? Or does it skip, e.g., index pages)? Is there a 
>> way to know for sure that there is no corruption?  
>> 6. We have tried on some occasions to run the recovery tool and re-import 
>> the corrupted database, but at least on one occasion this gave us errors so 
>> we were unable to restore the data. Unfortunately we do not have the error 
>> output anymore.
>> 7. The next time this happens, is there anything that we should check 
>> (e.g., the trace file)?
>>
>> I'll include some of the stacktraces, maybe this can give you an 
>> indication of what might have gone wrong.
>>
>> Thanx for your answers and/or tips.
>>
>> Kind regards,
>> Rob.
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "H2 Database" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/h2-database.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to