Page 1 of 2 1 2 LastLast
Results 1 to 15 of 22

Thread: firebird 2 naar 3 probleem

  1. #1
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509

    firebird 2 naar 3 probleem

    Hallo,

    (Windows64)
    ik wil een Firebird 2.5.8 database overzetten naar 3.0.5 ( ik gebruik een boekje van Carlos Cantu )
    Nu loop ik tegen een foutmelding aan en ik weet niet hoe ik deze op moet lossen.

    ik doe (pas heb ik voor het forumbericht aangepast)
    gfix -v -full -user SYSDBA -pas masterkey c:\Temp\dedatabase.fdb
    en krijg dan :
    Summary of validation errors
    number on index page errors : 2
    numb er of database page errors : 3

    Wie helpt mij hiermee op de goede weg?
    Erik

  2. #2
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Hoe heb je conversie uitgevoerd. Heb je met gbak een backup gemaakt en terug gezet naar FB3?
    Delphi is great. Lazarus is more powerfull

  3. #3
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    zover ben ik nog niet John.
    in eerste instantie had ik inderdaad een backup (in 2.5) en restore (in 3) gedaan. maar bij de restore kwam er een foutmelding. Dus ben ik terug gegaan naar het begin en heb ik de gfix gedaan met de in met bericht gemeldde melding
    Erik

  4. #4
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    met Google kom ik IBSurgeon ( https://ib-aid.com/en/ibsurgeon-firstaid/ ) tegen. Heeft iemand hier ervaring mee?
    Erik

  5. #5
    Je bent niet echt duidelijk.
    Weke stappen heb je precies uitgevoerd en welke foutmeldingen kreeg je?

    Ik neem aan dat je de gfix van versie 2.5.8 gebruikt hebt?

    Ik heb dit jaar 1x FirstAID for Firebird/InterBase databases gebruikt. Kostte €189.00 (voor max. 3 databases) maar dat kon ik de klant in rekening brengen.

    Index fouten zijn eigenlijk geen probleem. Die zijn te herstellen. Database pages zijn wel problematisch. Je kunt een gbak doen en dan de database herstellen zonder indexen en constraints. Dan moet je eerst wat reparatie doen aan eventuele verbonden records (met een 'offline' database). Maar daarna kun je de indexen en constraints weer herstellen en de database online halen. Dat is wel veel (en specialistisch) werk. Dit heb ik ooit bij 3 databases gedaan.

    De laatste keer kreeg ik een specifieke foutmelding die alleen via FirstAID op te lossen was.

  6. #6
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Rik,

    dank voor je reactie.

    stappen ( volgens het boekje ):
    gbak -user user -pas password -b -v -g -se service_mgr database backupfile
    en daarna
    gfix -v -full -user user -pas password database

    maar , als ik het goed begrijp is die tool echt goed. Dat het wat kost is niet zo heel erg, ik werk zakelijk.
    Alleen die licentie "3 databases" werpt nog wat vragen op. Ik begrijp nog niet helemaal wat ze er mee bedoelen.
    Mag je maar 3x een database ermee repareren, of mag je een database met een bepaalde structuur oneindig vaak repareren en betekent het dat je maximaal drie verschillende "structuren" mag repareren.
    Stel ik heb bij 100 klanten de zelfde database staan ( alleen natuurlijk met de specifieke gegevens van die klant ) en ze zouden allen (maakt even niet uit waarom en hoe ) een reparatie nodig hebben, heb ik dan genoeg aan de "3 databases licentie" ?

    Erik
    Erik

  7. #7
    Nee, wat ik begrepen heb is dat 3 databases ook echt alleen maar 3 individuele databases zijn.

    Je kunt de gratis versie instaleren en kijken of die bij de gegevens kan. Pas bij echt herstellen zou je het moeten kopen (en een unlock key krijgen).

    Vandaar dat ik altijd eerst kijk of de database met conventionele middelen te redden valt.

    Bij de desbetreffende database kreeg ik ook echt eencfoutmelding waardoor gfix en gbak zelf totaal niet werkte.

    Bij jou is dat niet zo. Die werken volgens mij wel maar geven een foutmelding bij herstellen.

    Zelfs bij FirstAID heb je de kans dat herstellen niet 123 mogelijk is omdat er echt corruptie in data zit. Dan zou het dus kunnen zijn dat bepaalde constraints niet te hetstellen zijn (omdat een record waar een veld naartoe wijst niet te herstellen was). Maar die zijn dan wel makkelijker in dat programma te herstellen.

    De stappen die ik meestal doe zijn...
    (Nou moet ik even achter mijn mobiel vandaan om op de computer te kijken... Moment...)

  8. #8
    Werkt een backup en restore binnen 2.x wel gewoon goed?

  9. #9
    Quote Originally Posted by rvk View Post
    De stappen die ik meestal doe zijn...
    (Nou moet ik even achter mijn mobiel vandaan om op de computer te kijken... Moment...)
    Nu vanaf de pc.... hier zijn de stappen.
    Ik probeer dus altijd de datebase te herstellen.
    Het kan dus zijn dat sommige records niet goed meekomen.
    Dan krijg je bij gbak restore ook foutmeldingen als de constraints gezet gaan worden.
    (Welke foutmelding kreeg je daar precies????)


    Code:
    "C:\Program Files\Firebird\Firebird_2_1\bin\gbak.exe" -b -v -user sysdba -pass masterkey "mijnfoutedb.fdb" mijnbackup.fbk
    
    gbak:    writing index PK_VC_301
    gbak:    writing index VC_301_Z_VC_001
    gbak:    writing data for table VC_301
    gbak: ERROR:database file appears corrupt ()
    gbak: ERROR:    bad checksum
    gbak: ERROR:    checksum error on database page 41736
    gbak: ERROR: gds_$receive failed
    gbak:Exiting before completion due to errors
    
    "C:\Program Files\Firebird\Firebird_2_1\bin\gfix.exe" -v -full -user sysdba -pass masterkey "mijnfoutedb.fdb"
    database file appears corrupt ()
    -bad checksum
    -checksum error on database page 41735
    
    "C:\Program Files\Firebird\Firebird_2_1\bin\gfix.exe" -mend -full -ignore -user sysdba -pass masterkey "mijnfoutedb.fdb"
    Summary of validation errors
    
            Number of record level errors   : 4
            Number of data page errors      : 6
            Number of index page errors     : 4
            Number of database page errors  : 5428
    
    
    "C:\Program Files\Firebird\Firebird_2_1\bin\gfix.exe" -v -full -user sysdba -pass masterkey "mijnfoutedb.fdb"
    Summary of validation errors
    
            Number of record level errors   : 4
            Number of index page errors     : 4
            Number of database page errors  : 5422
    
    "C:\Program Files\Firebird\Firebird_2_1\bin\gbak.exe" -b -v -ignore -user sysdba -pass masterkey "mijnfoutedb.fdb" "mijnbackup.fbk"
    
    "C:\Program Files\Firebird\Firebird_2_1\bin\gbak.exe" -c -v -REP -user sysdba -pass masterkey "mijnbackup.fbk" "mijnherstel.fdb" 2> herstel.log
    
    gbak:    activating and creating deferred index ADMINISTRATIE_VALUTA
    gbak:    committing metadata
    gbak:finishing, closing, and going home
    gbak:Database is not online due to failure to activate one or more indices.
    gbak:Run gfix -online to bring database online without active indices.
    Met een beetje geluk heb je nu in mijnhersteldb.fdb een database (die offline is) met bijna alle records.
    Maar er kunnen er een paar missen en de database is 'offline'.
    Je kunt nu wel met flamerobin (of andere manager) verbinding met je db maken en met select kijken welke records je mist en waar precies je constraints de mist in gaan.
    Als je die records met update of insert aanpast, dan kun je daarna de constraints wel goed zetten, indexen weer toevoegen en database online halen.

    Dus samengevat:
    Code:
    @rem copy old
    "C:\Program Files\Firebird\Firebird_2_1\bin\gfix.exe" -v -full -user sysdba -pass masterkey "mijnfoutedb.fdb" 2> log1.log
    "C:\Program Files\Firebird\Firebird_2_1\bin\gfix.exe" -mend -full -ignore -user sysdba -pass masterkey "mijnfoutedb.fdb" 2> log2.log
    "C:\Program Files\Firebird\Firebird_2_1\bin\gfix.exe" -v -full -user sysdba -pass masterkey "mijnfoutedb.fdb" 2> log3.log
    "C:\Program Files\Firebird\Firebird_2_1\bin\gbak.exe" -b -v -ignore -user sysdba -pass masterkey "mijnfoutedb.fdb" "mijnbackup.fbk" 2> log4.log
    "C:\Program Files\Firebird\Firebird_2_1\bin\gbak.exe" -c -v -REP -user sysdba -pass masterkey "mijnbackup.fbk" "mijnherstel.fdb" 2> log5.log
    pause
    exit
    @rem repair
    "C:\Program Files\Firebird\Firebird_2_1\bin\gfix.exe" -online normal -user sysdba -pass masterkey "mijnherstel.fdb"
    (De @rem repair staat dus voor eventuele repair werkzaamheden.)

    Overigens bestaat er de kans dat na de gfix full/gfix mend/gfix full, de db al goed is. Maar gezien jij echt databasepage-errors hebt denk ik dat je de volledige repair moet doen.

  10. #10
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Hallo Rik,

    dank voor je inzet !
    ik heb de instructies uitgevoerd, na de laatste , de restore, krijg ik de volgende logfile output:

    gbak: ERROR:unsuccessful metadata update
    gbak: ERROR: TABLE NAMENMEDISCH
    gbak: ERROR: Can't have relation with only computed fields or constraints
    gbak:Exiting before completion due to errors

    als ik de database bekijk, kan ik geen tabel NAMENMEDISCH vinden, ik heb wel NAMEN_MEDISCH.
    mogelijk heb ik in het verleden een keer een typefout gemaakt en verkeerd hersteld.
    Hoe kan ik nu die NAMENMEDISCH echt er uit krijgen ?
    Erik

  11. #11
    Ik had eigenlijk gehoopt dat ie de restore nu wel deed met die mend/ignore van gfix.

    Wat voor tabel is namen_medisch? Zit daar een key of constraint op? Staan er (alleen maar) calculated fields in?

    Je kunt de gbak -rep nog eens proberen met de parameter
    -I om de indexen uit te schakelen.
    Of -N om alle constraints uit te schakelen
    Of -NOD om triggers uit te schakelen.
    (In die volgorde)

    Hopelijk werkt het bij de -N al.
    (Zie ook https://firebirdsql.org/manual/gbak-cmdline.html)

  12. #12
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    dit is NAMEN_MEDSICH:

    CREATE TABLE NAMEN_MEDISCH (
    NUMMER INTEGER NOT NULL,
    NAAM VARCHAR(30));
    ALTER TABLE NAMEN_MEDISCH ADD PRIMARY KEY (NUMMER);

    bij alle drie jouw nieuwe instructies blijf ik de reeds genoemde melding over NAMENMEDISCH houden
    wordt er misschien ergens in een systeem tabel ( RDB$... ) iets vastgehouden ?
    Erik

  13. #13
    Dan moet je ook alle constaint en index benamingen nakijken. Ik zie dat jij een alter doet zonder de primary key een naam te geven. Dit is misschien bij de constraints ook zo. En dan kan er wel zo'nnaam uitrollen.

    Doet -M het ook niet? (Alleen metadata)

    Heb je ook geprobeerd of je op alle tabellen een select * kunt doen (en dan fetch all voor de table in flamerobin). Als dat werkt kun je n.l. ook nog zelf de tabbellen overpompen naar een nieuwe database. En als het niet lukt zie je gelijk waar de fout zit.

  14. #14
    Zie ook http://www.firebirdfaq.org/faq324/
    Die verwijst naar #20 voor overpompen van data met fbcopy.
    http://www.firebirdfaq.org/faq20/

  15. #15
    Ps. Je doet de restore toch wel in 2.5 en niet in 3?

Page 1 of 2 1 2 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •