db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Sitsky <s...@nuix.com>
Subject Re: Repairing a corrupted database with invalid checksum on page
Date Thu, 11 Jun 2009 06:44:51 GMT
Kathey Marsden wrote:
> Mike Matrigali wrote:
>> Then you could figure out how important container 1105
>> is.  The best case is if 1105 is an index then one need only drop the
>> index and recreate it.  From the conglomerate id I think it is an
>> index:
>>
> Once you get your database in a bootable state you can identify the 
> container with one of the following queries.

Hi Mike and Kathey,

Thank you very much for your helpful replies.  As suggested, I wrote a 
hacked version of Derby to ignore this page during the log redo phase.

The database booted up, and thankfully, the corrupted page was in an 
index, so I was able to drop it, and recreate it and now all is well.

For the record, I've attached the patch I made to Derby in case somebody 
else can benefit from it.  In this situation, I ran Derby's ij command with:

java -cp derby.jar;derbytools.jar 
-Dorg.apache.derby.skipPagesDuringRecovery=3586

The system property specifies a comma separated string of page IDs to 
ignore during the log redo phase.

I realise this is hackery, but would there be any benefit for a polished 
version of this to go into the main code?  Sadly, corruption is a fact 
of life, whether it is due to software or hardware (or humans)..

-- 
Cheers,
David

Nuix Pty Ltd
Suite 79, 89 Jones St, Ultimo NSW 2007, Australia    Ph: +61 2 9280 0699
Web: http://www.nuix.com                            Fax: +61 2 9212 6902

Mime
View raw message