[Allegro] Datenbank-Problem

Fischer, Thomas fischer at sub.uni-goettingen.de
Di Nov 29 13:06:22 CET 2016


Lieber Herr Eversberg,

> Am 29.11.2016 um 11:19 schrieb Bernhard Eversberg <b-eversberg at gmx.de>:
> 
>> Gesendet: Dienstag, 29. November 2016 um 10:01 Uhr
>> Von: "Fischer, Thomas" <fischer at sub.uni-goettingen.de>
>> 
>> ich habe festgestellt, dass bei mir die Volltextsuche über eine bestimmte Datenbank A99 zum Absturz bringt.
>> Da dies immer bei jfm_15.gld passiert habe ich in diese Datei hineingeschaut – und vermute, dass das Problem damit zu tun haben könnte, dass in der Datei 1.377.165 mal ASCII 0 hintereinander auftritt.
> 
> Dann ist es kein Absturz, das Programm braucht wegen der furchtbar vielen Nullen nur sehr lange, den Satz einzulesen.

Nein, das Programm meldet "A99 kann nicht mehr ausgeführt werden" und man kann es dann entweder schließen oder auf Microsofts Fehlerbehandlung hoffen. Das nenne ich eine Absturz.

> So etwas war mal aufgefallen und die Fehlersituation wurde dann entschärft, es dürfte daher jetzt ein seltener Ausnahmefall sein.
> Es war folgendes  passiert, als ein Satz zu speichern war:
> 1. Programm stellte fest: der Satz muß ans Ende der Datei
> 2. ... positionierte deshalb hinter das letzte Byte
> 3. stellte die Position fest, setzte den Schreibzeiger da hin und schrieb die Position für den betr. Satz in die TBL
> 4. schrieb den Satz an das vermeintliche Ende der Datei.
> Bei Vorgang 3 kann anscheinend immer noch mal ein Fehler passieren, aber sehr selten: Das Ergebnis der
> Positionsfeststellung war zu groß, in diesem Fall viel zu groß. Wenn der Schreibzeiger dorthin positioniert
> wird, dann füllt das Betriebssystem den Raum zwischen dem tatsächlichen Ende und der zu großen Position
> mit Nullbytes auf.
> Richtig schlimm ist das nicht - es gehen keine Daten verloren oder werden überschrieben.

So weit so gut.

> KEINESFALLS dann die Nullen mit einem Editor rausnehmen! Die Positionen der nachfolgenden Sätze
> würden dann nicht mehr stimmen.

Das stimmt wohl, aber würde das durch den Neuaufbau der Satztabelle nicht behoben?

> SONDERN mit h org die Funktion "Einzelne Datendatei bereinigen" und dann die Datei jfm_15 wählen.
> Die Nullen verschwinden auch bei einem Neuaufbau der Datenbank, was aber in Ihrem Fall
> erheblich länger dauern würde.

Das hat funktioniert, die Datei ist von den vielen Nullen und den deaktivierten Datensätzen bereinigt.

> Ob eine Abhilfe möglich ist, muß nochmal untersucht werden. Falls es aber sein kann, daß das
> Betriebssystem eine zu große Zahl für die Endposition liefert, wär wohl nix zu machen.
> 
> Kleine Nachfrage: Wie groß ist die Datei?

Die Datei war "voll": 16.000.370 Bytes, die nächste Datei jfm_16.gld schon angefangen.
Nach der Bereinigung noch 14.211.419 Bytes.

Herzlichen Dank und viele Grüße
Thomas Fischer

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 842 bytes
Beschreibung: Message signed with OpenPGP using GPGMail
URL         : <http://bibservices.biblio.etc.tu-bs.de/pipermail/allegro/attachments/20161129/a71bc995/attachment.sig>


Mehr Informationen über die Mailingliste Allegro