Announcement

Collapse
No announcement yet.

firebird: pool corrupted

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • firebird: pool corrupted

    Seit einigen Tage versuche ich eine firebird Datenbank über ein JAVA Programm mit einigen tausend Datensätzen zu erstellen.
    Stets erhalte ich nach ca 8500 Datensätze eine Fehlermeldung, das das Statement nicht erzeugt werden kann, danach eine Fehlermeldung, daß die Verbindung unterbrochen wurde.
    In der Logdatei der Firebird DB sind verschiedene Fehlermeldungen zu finden,
    entweder gds_free pool corrupted oder gds_free attempt to release bad block, oder wrong page type.
    Danach hatsich der Server beendet (-1) und erfolgreich neu gestartet.
    Die Datenbank ist danach durchaus korrekt zu benutzen!
    Generelle Netzprobleme sind keine festzustellen.Die Benutzung und abfrage der DB ist Problemlos! Einzig das erstmalige Füllen der DB bringt den Server zum Absturz!
    Das Verhalten ist unter Linux auf versch, Geräten mit versch Kernel zu beobachten. Ganz gleich welche Tabelle, mit oder ohne Index.
    Das Problem tritt nicht auf, wenn die Datenbank nicht remote sondern lokal mit den Daten gefüttert wird.
    Kennt jemand das Problem?
    Kennt jemand eine Lösung?

    Ich bin sehr erstaunt über dieses Verhalten, zumal auch andere Programmierer (zu lesen bei ibphoenix,com) dieses Verhalten erlebten, aber auch keine Lösung hatten!
    bisher hatte ich angenommen das firebird mit erheblich größeren Datenmengen umgehen kann. die resultierende DB ist nur 2MB groß!
    Falls jemand eine Lösung hat wäre ich wirklich dankbar!

  • #2
    Hallo,

    wie legt das Programm die Datensätze in der InterBase-Datenbank ab? Wird eine parametisierte INSERT-Anweisung verwendet, die nach dem Prepare-Aufruf mit neuen Daten immer wieder ausgeführt wird?

    >..bisher hatte ich angenommen das firebird mit erheblich größeren Datenmengen umgehen kann..

    Da in der Frage das Wort JAVA vorkam, stellt sich die Frage, ob die Ursache für dieses Problem im Programm, im Treiber oder beim Firebird liegt

    Comment


    • #3
      >..bisher hatte ich angenommen das firebird mit erheblich größeren Datenmengen umgehen kann.. <br>
      das ist auch korrekt, wir arbeiten in einem Projekt mit ca. 500000 Datensätzen pro Tag, an firebird liegt es nicht, vielleicht an der java implementation?

      gruß

      Holge

      Comment


      • #4
        Vielen Dank für die Antworten!
        Im Moment habe ich das Problem so gelöst, das ich jeden Datensatz
        in einer Transaktion mit commit bestätige und alle 300 Datensätze die Verbindung zur Datenbank beende und danach neu aufbaue.
        Diese Lösung ist zwar recht langsam, funktioniert aber!
        Ich verwende den JDBC Interclient V2.0.1 Testbuild für jre1.3.
        Die Datensätze werden über ein Statement ohne Parameter eingefügt. Der SQL Befehl dazu wird vom Programm für jeden Datensatz erzeugt und dann mit Statement.executeUpdate an die Datenbank gesendet.
        Vielleicht weiß ja jemand eine bessere Lösung

        Comment


        • #5
          Die bessere Lösung ist ein parametriesertes SQL, da dann beim Server bei jedem Statement der zeitlich aufwendigste Teil, Parsen und Optimieren, wegfällt. Bzw nureinmal auftrit

          Comment

          Working...
          X