En effectuant une autopsie sur une base de données récemment, je suis tombé sur un bug qui mai être d'intérêt pour certaines personnes.

Les tentatives de joindre à la base de données a échoué avec l'erreur "gds de vérifier la cohérence interne, ne peut pas trouver la pointe." Contrôle de la tête de la base de données a montré que le prochain numéro de transaction est 131596294 et la taille de la page a été 1024. Comme cela se produit, page 1024 byte tiendra 4,016 transaction Etats. Diviser le prochain numéro de transaction en 4016 pour obtenir le numéro de séquence de pointe page donne 32768.001494. Un nombre très intéressant.

Il ya un bug dans InterBase 5.6, 6.01, Firebird et de la beta à l'origine de l'opération de recherche d'une page d'inventaire à l'échec si il ya plus de 32.767 pages transaction. Ce qui fait de la transaction id de sécurité maximum pour une base de données avec:


1024 byte 131596287 pages.
2048 byte 265814016 pages.
4096 byte 534249472 pages.
8192 byte pages 1071120384.

Bien que ceux-ci sont nombreuses, ce
base de données a dépassé 131 millions de transactions en six
mois.

Suggestions:

  1. ne pas utiliser une taille de 1024 octets page.
  2. faire vérifier votre numéro de transaction, de temps en temps.
  3. si vous voyez le prochain numéro de transaction est proche de la limite, de sauvegarde et de restauration de la base de données.
  4. Gfix ne réglera pas ce problème, mais je peux. (S'il vous plaît contactez-moi pour plus de détails).

    Observe,

    Ann

Average rating: