2016-02-25 16 views
5

La nostra azienda utilizza i database Firebird nei suoi prodotti già da 4 a 5 anni. Prima di ciò abbiamo utilizzato i database Interbases. Recentemente sono arrivati ​​nuovi requisiti che richiedono l'abilitazione del set di caratteri Unicode (al momento stiamo usando il set di caratteri "NONE"). Dopo aver esaminato il problema, ho scoperto che la soluzione richiede una delle fasi di aggiornamento del formato binario ODS (su struttura del disco) dei file di database. Ho letto che la soluzione consigliata è di eseguire il backup e quindi ripristinare il database utilizzando l'utility gbak. C'è un problema con questo. Nella original manual di Firebird c'è scritto:Aggiornamento database Firebird

Il backup dovrebbe essere presa utilizzando l'utilità gbak fornita dalla vecchia versione ODS di InterBase e Firebird. Il ripristino dovrebbe essere effettuato utilizzando gbak dalla versione più recente di Firebird.

Questo è un problema perché il prodotto su cui sto lavorando è in fase di sviluppo da 20 anni e non posso davvero dire quali sono le versioni ODS utilizzate dai nostri clienti. Se dovessi seguire le istruzioni sopra menzionate significherebbe che il mio programma di aggiornamento dovrebbe avere tutte le possibili versioni dell'utilità gbak rilasciate da Interbase 1.0 a questi giorni. In base alle versioni ODS rilevate (ad esempio, richiamando l'utilità della riga di comando "gstat" fornita come parte dell'installazione di Firebird), dovrei chiamare il file gbak.exe corretto. Mi sembra una soluzione eccessivamente complicata. Non è possibile utilizzare solo la più recente utility gbak per la fase di backup e ripristino? Quello di cui ho paura è che faccio un errore da qualche parte in questo processo e che i dati andranno persi. Quindi non posso affidarmi esclusivamente all'utilità gbak per i file di backup ma di backup * .gdb manualmente.

+0

Questa è una domanda molto specifica. Forse dovrai chiedere direttamente al team di creatori di Firebird, se vuoi esserne sicuro. – Majkl

+0

La versione più recente di Interbase gbak supporta tutti gli ODS meno recenti? In tal caso, è sufficiente eseguire il backup utilizzando la più recente utility Interbase e quindi ripristinare con gbak di Firebird. –

+0

@ AndrejKirejeŭ Leggendo la domanda, sta già usando Firebird, quindi non c'è bisogno di usare l'antica Interbase gbak (e migrare direttamente dalle recenti versioni interbase a Firebird è - per quanto ne so - non possibile usando gbak). –

risposta

5

Dovresti essere in grado di eseguire il backup del tuo database con il gbak della tua attuale versione di Firebird e ripristinare con il gbak della versione di Firebird a cui stai migrando. Se questa è la stessa versione, non è un problema.

Le istruzioni per utilizzare in modo specifico il gbak della versione di Firebird o di Interbase che ha creato la versione di ODS è - in genere - eccessivo poiché gbak comprende i formati precedenti. Se il tuo database funziona correttamente con la versione corrente di Firebird, dovrebbe essere possibile eseguire il backup con il gbak di quella versione. Per quanto ne so, il significato dell'istruzione è che si dovrebbe ripristinare con il gbak della versione di Firebird di destinazione.

Ignorando alcuni casi limite, in generale funzionerà su Firebird 2.5 durante l'aggiornamento di ODS. Durante la migrazione da Firebird 2.5 a Firebird 3 è necessario seguire queste istruzioni per aggiornare correttamente.

Assicurati inoltre che quando esegui backup normali utilizzi la versione corretta. Ad esempio il backup di un database ODS 11.2/Firebird 2.5 con Firebird 2.1 gbak sembrerà funzionare, ma renderà il backup non modificabile su Firebird 2.5 perché i vecchi gbaks non sanno che devono saltare il ruolo RDB$ADMIN. Al momento del ripristino su Firebird 2.5, si ottiene il tentativo di inserire un ruolo duplicato, che interromperà il ripristino.

Tuttavia, mentre si modifica il database per utilizzare UTF-8, è consigliabile prendere in considerazione la creazione del database di nuovo con i set di caratteri corretti e il pompaggio dei dati (con conversioni appropriate di set di caratteri) dal vecchio database al nuovo .

Problemi correlati