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

 Firebird Discussion :

Perte de données Firebird


Sujet :

Firebird

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Perte de données Firebird
    Bonjour,

    Je rencontre un problème avec Firebird v1.0 sur un serveur Linux. En fait, cela fait 2 fois que je perds toutes informations que j'ai saisies pendant une journée complète.
    Il n'y a pas de plantage sur le serveur ni sur le poste client, le serveur firebird n'a pas redémarré. J'utilise un alias BDE pour me connecter qui est bien configurer sans cache schema database.
    Sur ma base j'ai vérifié le paramètre Forced Writes qui est à Enable.
    Donc je sèche complètement. Si qq'un a déjà rencontré ce cas ou à une idée, je suis preneur.
    Merci

  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
    Le disque n'est pas "full" ?
    "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
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Tu le fais avec des transactions?
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Le disque n'est pas full et il n'y a pas de transactions. J'écris directement dans la base de données.
    Est-ce qu'il y a des indicateurs qui permettent de revenir comme cela à un état préalable de l'état de la base de données? Si oui, est-ce que vous pouvez m'indiquer quels sont ces marqueurs et s'il est possible de forcer un commit qui écrit les nouvelles données dans la base merci.

  5. #5
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par jeanafond
    et il n'y a pas de transactions. J'écris directement dans la base de données.
    Quand je lis ca je me dit que vous ne savez pas utilisé les transactions.

    Vous êtes comme monsieur Jourdain vous faites de la prose sans le savoir, vous ce sont les transactions que vous faites sans le savoir.

    En effet fb ou Ib ouvrent une transaction même pour un simple select.

    Par defaut (donc sans paramétrage de votre part) la transaction est de type snapshoot c'est a dire l'isolation la plus forte.

    Si vous ne faites jamais de commit les autres utilisateurs ne voient pas les modifications que vous faites et vous ne voyez pas les modifs des autres même ci ceux ci les commits.

    De plus en fermeture de votre application vous avez un rollback automatique toutes les données que vous avez pu modifiées ou créées sont annulées...

    Je vous suggère d'étudier de plus pres les transactions sans quoi vous risquez d'avoir de drole de surprises.

    Ce qui m'étonne tout de même c'est que vous utilisiez BDE pour un nouveau développement alors que celui ci est abandonné par Borland. de plus normalement le BDE fait un commit automatique en fin d'appli il me semble à moins que vous n'ayez touché à quelques paramètres.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos explications. Mais mon problème c'est comme je l'ai précisé que je n'ouvre pas de transactions. J'utilise le BDE car ce n'est pas un nouveau développement.
    Ce qu'il s'est passé. Les utilisateurs ont travaillé toute la journée sans problèmes, chacun voyant ce que les autres saississent (ce qui me fait dire que les données sont bien dans la base et commité).
    D'habitude tout se passe bien, il se trouve que 2 fois on s'est retrouvés à perdre toutes les données de la journée, ce que je n'explique pas.

    Merci encore pour votre aide

    Monsieur Jourdain qui n'utilise pas de transaction

  7. #7
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par jeanafond
    Mais mon problème c'est comme je l'ai précisé que je n'ouvre pas de transactions.
    oui BDE le fait pour vous... Quoique vous fassiez sous fb c'est obligatoirement dans une transaction (meme une simple lecture)
    Citation Envoyé par jeanafond
    J'utilise le BDE car ce n'est pas un nouveau développement.
    C'est une bonne raison. Mais alors comment fonctionnait cette aplication avant ?? il n'y avait pas ce problème ?

    Citation Envoyé par jeanafond
    Ce qu'il s'est passé. Les utilisateurs ont travaillé toute la journée sans problèmes, chacun voyant ce que les autres saississent (ce qui me fait dire que les données sont bien dans la base et commité).
    Oui c'est vrai avec des transactions classiques (read comited ) c'est tout à fait exacte.

    Citation Envoyé par jeanafond
    D'habitude tout se passe bien, il se trouve que 2 fois on s'est retrouvés à perdre toutes les données de la journée, ce que je n'explique pas.
    C'est alléatoire ou vous avez réussi à isolé un cas de figure ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Le fonctionnement de l'application n'a pas changé.
    Le problème est aléatoire, il s'est produit deux fois et je suis incapapble de le reproduire.
    C'est pour cela que je viens chercher de l'aide sinon j'aurais sûrement pu touver le cas en debuggage sur mon appli.
    En tout cas merci pour votre aide, toute idée est la bienvenue

  9. #9
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Avez vous regardé dans firebird.log ?

    Sinon vous pouvez aussi créé vos propres logs

    Par exemple créé une table EXTERNE avec
    une colonne DATE_EVENEMENT char(24)
    une colonne TYPE_ACTION char(20)
    une colonne TABLE CHAR(40)
    une colonne USERNAME varchar(40)
    une colonne LIBELLE char(80)

    puis vous crééz des triggers after insert, update, delete sur les tables à logger.

    Dans lequel vous faites des insert dans la table externe

    DATE_EVENEMENT = cast(cast('now' as timestamp) as varchar(24))
    TYPE_ACTION = 'INSERT'
    TABLE = 'MA_TABLE'
    USERNAME = USER;
    LIBELLE = NEW.ID || ' ' || ...
    Par exemple.

    Il faut savoir que les tables externes sont hors transaction. Ce qui veux dire que si vous faite un rollback de votre transaction ce qui a été inséré dans votre table externe n'est pas enlevé.
    Et donc vous aurez ainsi une log basique.

Discussions similaires

  1. FireBird : perte de données ! :(
    Par Botfounast dans le forum Débuter
    Réponses: 1
    Dernier message: 08/05/2009, 20h08
  2. Réponses: 17
    Dernier message: 18/09/2008, 18h00
  3. Perte de donnée
    Par spikto dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 16h03
  4. Crash InnoDB,perte de données définitives... Info ou Intox ?
    Par Alexandre T dans le forum Administration
    Réponses: 3
    Dernier message: 17/01/2005, 10h44
  5. [JTable] Perte des données
    Par david71 dans le forum Composants
    Réponses: 8
    Dernier message: 09/01/2005, 00h37

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