On Mon, Apr 4, 2016 at 2:41 AM, 'Andrew Zenz' and...@aimsoftware.com.au
[firebird-support] <firebird-support@yahoogroups.com> wrote:
...


>
>
> I am using WI-V2.5.3.26780 Firebird 2.5 ODS 11.2
>
> ...
>
> For both databases while running gbak:
>
> gbak -user sysdba -password masterkey -b -ig -l corrupt.fdb corruptbak.fbk
> –v
>
> I get the error:
>
> gbak: ERROR:internal Firebird consistency check (decompression overran
> buffer (179), file: sqz.cpp l
>
> ine: 239)
>
> gbak: ERROR:gds_$receive failed
>
> gbak:Exiting before completion due to errors
>
> gbak: ERROR:internal Firebird consistency check (can't continue after
> bugcheck)
>
>
>
> When I run gfix on both:
>
> gfix -user sysdba -password masterkey -validate -full -no_update
> corrupt.fdb
>
> I get the error:
>
> internal Firebird consistency check (cannot find tip page (165), file:
> tra.cpp line: 2375)
>

The first error - decompression overran buffer - is a bad sign, but it may
affect only one record,
or with luck only one back version.  But, that last error - cannot find tip
page - is bad.  TIP pages
contain transaction state.  Losing a TIP means that some transactions may
be lost after reporting
a successful commit.   When you see that error, make a read-only copy of
the database before
you do anything else or Firebird may start garbage collecting good data.

Gfix handles a limited number of common problems.  IBSurgeon has a free
tool, FirstAid, that analyzes
corrupted databases and reports back all the types of corruption.  In
another mode, which is not free,
it will fix some problems.  More complicated corruptions require some
degree of manual intervention.
IBPhoenix, for one, has people and tools that can fix many corruptions.  In
your case, since you've
lost a TIP, I'd recommend professional help if you want the as much of the
data  back as possible.

>
> I can pump some (most) of the data from them but hit errors on some tables
> (unfortunately large important
>
ones) .  One DB is 1.3Gb, the other is over 11Gb.
>

On a read-only copy of the database, you can probe with isql or another
data browsing tool to identify
bad records with indexed retrievals.  This works best on a primary key.
Look for records with primary
key less than some value.  If that works look for records with a key
between that value and some other
value.  When you hit an error, narrow the range.  That process should
eventually identify all the bad
records, and, with luck, you can pump the rest using key ranges.

Good luck,

Ann
  • [firebird-sup... 'Andrew Zenz' and...@aimsoftware.com.au [firebird-support]
    • [firebir... Hasnain Najafi hasnain.naj...@boots.co.uk [firebird-support]
      • Re: ... Mark Rotteveel m...@lawinegevaar.nl [firebird-support]
    • Re: [fir... Ann Harrison aharri...@ibphoenix.com [firebird-support]
      • RE: ... 'Andrew Zenz' and...@aimsoftware.com.au [firebird-support]
        • ... Rik van Kekem r...@graficalc.nl [firebird-support]
    • Re: [fir... Michal Kurczabinski michk...@gmail.com [firebird-support]
      • RE: ... 'Andrew Zenz' and...@aimsoftware.com.au [firebird-support]

Reply via email to