IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Firebird Discussion :

[GBAK] Erreur lors de la restoration


Sujet :

Administration Firebird

  1. #1
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut [GBAK] Erreur lors de la restoration
    Bonjour à tous,

    j'effectue une backup de ma DB avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gbak -v -t -user SYSDBA -password *** C:\....
    Mais lors de la restoration avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gbak -c -r -v -p 4096 -user SYSDBA -password *** -no_validity C:\...
    j'obtiens une erreur :
    gbak: opened file C:\Projets\MyDB-20051011-1809.FBK
    gbak: transportable backup -- data in XDR format
    gbak: backup file is compressed
    gbak: created database C:\Projets\MyDB.GDB, page_size 4096 bytes
    gbak: started transaction
    gbak: restoring domain RDB$DBKEY_LENGTH
    gbak: ERROR: attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_2"
    gbak: Exiting before completion due to errors
    J'imagine que les index et les triggers y sont pour quelque chose, mais je ne sais pas comment contourner le problème et récupérer mes backups.

    Si quelqu'un a déjà été confronté au problème,
    merci.
    [Dites][le][avec][des][tags].[Arf...]

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    C'est du interbase/FireBird ça, non ?

    => 1 petit tour sur le forum dédié......

    Et puis j'ai l'impression que tu cherches à créer une DB interbase (GDB) à partir d'un backup Firebird (FBK)?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    C'est tout du FireBird, même si IB et FB sont compatibles.
    Sur le forum, je n'ai trouvé que des questions, et les réponses ne concernaient que les switchs. Certaines parlent d'utilitaires, mais aucune solution ne fonctionne pour moi.

    J'en suis à chercher comment désactiver/activer mes triggers manuellement pour faire un restore entre, et ensuite remettre les numéros à la bonne valeur. C'est coton
    [Dites][le][avec][des][tags].[Arf...]

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Est-ce qu'avec l'option lors de la restauration, elle aboutit ?

    [EDIT]

    En fait, dans ta commande de backup, il manquerait le -B indiquant le backup.

    Et pour la restauration, d'après la doc, c'est soit -C soit -R
    Citation Envoyé par IB OpGuide
    gbak {-c|-r} [options]......
    toi, tu mentionnes les 2
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Non J'ai essayé tous les switchs.
    En fait, c'est bien les triggers qui m'empechent de restorer les fiches...
    [Dites][le][avec][des][tags].[Arf...]

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    le problème provient d'une base "cassé"...

    j'explique, le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gbak: ERROR: attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_2""
    indique le la restauration essai de faire "entrer" une valeur qui est déjà présente dans la table, alors que tu as un index unique, ce qui est impossible!

    il faut donc "voir" à trouver cette table avant le backup et y faire une commande du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select <le champ en question>, count(1) from <ta table>
    group by <le champ en question>
    having count(1) > 1
    pour chaque réponse, c'est une erreur...

    il te faudra alors voir le pourquoi et supprimer tous les doublons!

    à ton clavier...

  7. #7
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Lors du restore, il crée une base vierge dans laquelle il essaie d'importer des datas. Le problème est que le trigger qui fournit les IDU (numeros uniques) interdit l'ajout d'enregistrements dont l'IDU < au NextNumber.
    Enfin, je crois...

    Et c'est ce que j'essaies de contourner.


    [EDIT]

    J'ai même essayé avec une base vierge, le restore donne la même erreur.
    Donc c'est le domain RDB$DBKEY_LENGTH qui le fait planter...
    [Dites][le][avec][des][tags].[Arf...]

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    610
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 610
    Points : 213
    Points
    213
    Par défaut
    C'est vraiment problématique si la défaillance est due aux générateurs qui interdisent la restauration pour la cause que tu mentionnes. J'avoue que cela m'étonne un peu, car cela ne doit pas être une situation trés rare!

    Je suis intéressé pour connaitre la solution à ce problème, s'il est réellement du à ce point là, car je vais y être confronté trés prochainement

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    quand tu parle de générateur, tu pense à un trigger "before" avec à l'intérieur quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new.id = gen_id( mongenerateur, 1 );
    est-ce à cela que tu fais référence?

    si oui, la réponse et alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if( new.id is null )then
      new.id = gen_id( mongenerateur, 1 );
    auquel cas, le générateur ne fonctionnera pas pendant la restauration, puisque "new.id" recevra une valeur provenant du backup.

    note que "id" et un nom de champ comme cela, c'est à remplacer par le nom de ton champ.

    cela dit, il est étrange qu'il y a un problème sur ce champ, car les champs et index rdb$... sont des éléments des tables systèmes et il est extrêmement rare d'avoir des problèmes de la sorte sur ces tables, sauf à faire du "hotfixe" directement dans ces tables... ou alors un mauvais backup (fichier endommagé) ou une base "cassé" suite à un problème disque.

    autre chose, je trouve curieux que tu n'indique pas le nom de la base à restaurer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ,gbak -c -r -v -p 4096 -user SYSDBA -password *** -no_validity C:\...
    je vois le nom de ce qui pourrait être le nom du backup, mais pas du nom de la base? mais je peux me tromper.

    essai alors ceci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gbak -c c:\mabase.fdb c:\lebackup.fbk -user sysdba -password ***
    histoire de "voir"
    cette commande minimaliste permet de restaurer une base de données.

    mais je n'y crois pas trop... je reste persuadé que le problème provient d'une donnée qui est un "double" dans une colonne à index (contrainte) unique, ce qui est tout à fait anormale, mais possible lors de manipulation de la base de données.

  10. #10
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Effectivement, je n'ai pas mentionné les 2 noms de DB dans mon code GBAK, mais ils y figurent bien.

    Oui, je parlais du générateur before et le test null est peut-être la solution, j'essaierai demain matin au bureau.

    Qu'entends-tu par "hotfixe" directement sur la table ? Si tu penses à la mise à jour de l'id en dur, non, je ne le fais jamais.
    Quant à la base cassée, même celle qui tourne déjà avec des enregistrements ne remonte aucune erreur de doublons, les triggers étant en place depuis le début, mais on ne sait jamais

    J'insiste sur le fait que j'ai effectué le backup et le restore avec une base vide pour l'instant et j'obtiens la même erreur lors du restore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gbak: ERROR: attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_2"
    Merci de vos réponses et encore désolé d'avoir posté dans le mauvais forum.
    [Dites][le][avec][des][tags].[Arf...]

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    c'est franchement étrange ton problème... si la base et vide, il est impossible d'avoir cela, ta base d'origine et forcément endommagée d'une manière ou d'une autre.

    ou alors ta base et loin d'être vide comme tu le pense!

    mais je suis sûr que le problème et lié à un doublon dans une colonne avec une contrainte unique, le message et des plus clair à ce sujet.

    un "hotfixe" consiste à faire des inserts/updates directement dans les tables systèmes, or le message référence une des tables systèmes (mais j'ignore laquelle), donc deux possibilité, ta base est endommagée, ou quelqu'un à bricolé cette table systeme, aux choix...

    essai donc de trouver la table en question et passe dessus le "select...having" tu aura certainement des surprises!

  12. #12
    Membre actif Avatar de TMuet
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2003
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 225
    Points : 288
    Points
    288
    Par défaut
    Problème déjà constaté également sous Firebird.
    Il accepte dans certains cas (que je n'ai pas encore précisemment établis) d'insérer des doublons sur la clé primaire

    Or, lors de la restauration, l'application des contraintes d'intégrité détecte le problème et échoue.
    Le backup n'a rien détecté.

    Il suffit de restaurer sans les constraintes d'intégrité.

  13. #13
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    J'ai déjà testé avec -no_validity et c'est pareil
    C'est une base FireBird.
    [Dites][le][avec][des][tags].[Arf...]

  14. #14
    esa
    esa est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 61
    Points : 38
    Points
    38
    Par défaut
    Je viens de créer une autre base en partant de zero et là tout fonctionne correctement.
    J'avais donc un problème dans la structure (identique pourtant) de l'autre base, surement corrompue, même après avoir supprimé tous les enregistrements de toutes les tables.

    Merci à tous pour vos réponses.
    [Dites][le][avec][des][tags].[Arf...]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur lors de l'execution d'un script jsp
    Par tuxor dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 06/08/2004, 12h35
  2. Erreur lors de la connexion
    Par mathll65 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 23/03/2004, 17h46
  3. Erreur lors d'une requete INNER JOIN
    Par k-lendos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/03/2004, 15h09
  4. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  5. [VB6] Erreur lors de l'ouverture d'un document Word
    Par Marco le Pouillot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/01/2003, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo