SQL - Fehler bei Division durch bestimmte Werte

Gast #3236091
Hallo Forum,

ich nutze Firebird SQL auf mehreren identischen Steuerungen und logge 
unter anderem Fehlerzustände in einer Tabelle.

Die Abfragen erfolgen durch
1
SELECT 
2
   m.CURRTIME,
3
   p.varname,
4
   m.FVAL,
5
   m.ICODE
6
FROM MESSAGES m
7
join PARAM p
8
on p.ID=((m.ICODE-20000)/100)
9
order by p.ID desc NULLS FIRST;

wobei Fehler in der MESSAGES-Tabelle durch Werte über 20000 
gekennzeichnet werden.

Nun zu meinem Problem:

Auf einer Steuerung bricht diese Abfrage mit angehängter Fehlermeldung 
ab.
Hierbei konnte ich feststellen, dass die Zeile mit der Berechnung 
verantwortlich ist.
1
on p.ID=((m.ICODE-20000)/100)

Ist der Divisor kleiner 10 (anstatt der 100) wird die SELECT-Anweisung 
ausgeführt, ab einem Wert von 10 nicht mehr.

Woran kann dies liegen? Wieso nur bei dieser einen Steuerung?

Ein Umstand, der dazu geführt haben könnte war:

Durch eine wachsende Text-Datei war die Speicherkarte einmal randvoll. 
Der Prozess wurde angehalten und die Mega-Textdatei gelöscht.

Danke für eure Hilfe
Name
Angehängte Dateien:
Gast #3238847
Name schrieb:
>
1
> on p.ID=((m.ICODE-20000)/100)
2
>
>
> Ist der Divisor kleiner 10 (anstatt der 100) wird die SELECT-Anweisung
> ausgeführt, ab einem Wert von 10 nicht mehr.
>
> Woran kann dies liegen? Wieso nur bei dieser einen Steuerung?
Datenbank zerschossen und mit dem Divisor kleiner 10 erwischst du gerade 
die Datensätze, die defekt sind?
Gast #3253219
Hallo,

Sven P. schrieb:
> Datenbank zerschossen und mit dem Divisor kleiner 10 erwischst du gerade
> die Datensätze, die defekt sind?

ich war schon beinah überzeugt, aber (heute ertestet):

die Abfrage wird ordentlich ausgeführt, wenn ich
1
order by p.ID desc NULLS FIRST;
weglasse. Die Ergebnisliste umfasst über 50.000 Zeilen.
Ist es vorstellbar, dass das "Umdrehen" der Ergebnisliste zu hohe 
Ressourcenanforderungen hat?
Gast #3253225
Name schrieb:
> Ist es vorstellbar, dass das "Umdrehen" der Ergebnisliste zu hohe
> Ressourcenanforderungen hat?

wegen den paar zeilen? Ich denke nicht. (ich arbeiten mit DBs und da 
sind es ehrer 50.000.000 Zeilen, aber kein Firebird)

Hast du den DB check mal durchlaufen lassen?
Gast #3253263
validate und full müsste das richtige sein.

gfix -validate db.gdb
oder
gfix -validate -full db.gdb
oder
gfix -full db.gdb

ich muss auch ständig wieder probieren, habe aber gerade keine DB hier 
zu testen da.
Gast #3253286
1
gfix -user xxx -password yyy -validate db.gdb
oder
1
gfix -user xxx -password yyy -validate -full db.gdb

führt zu:
bad parameters on attach or create database
-secondary server attachments cannot validate databases

1
gfix -user xxx -password yyy -full db.gdb
oder
1
gfix -user xxx -password yyy -full -validate db.gdb


führt zu:
incompatible switch combination
please retry, specifying an option
Gast #3253350
ok, als solches hätte ich die Fehlermeldung nun nicht interpretiert..

Lokal lag die DB zwar vor, aber ein Benutzer war verbunden.
Mit alleinigem Zugriff, wird der Befehl nun wohl ausgeführt und ohne 
Fehler- oder sonstigen Meldungen beendet.
Gast #3253353
Name schrieb:
> Lokal lag die DB zwar vor, aber ein Benutzer war verbunden.
> Mit alleinigem Zugriff, wird der Befehl nun wohl ausgeführt und ohne
> Fehler- oder sonstigen Meldungen beendet.

ok, dann scheint es wirklich ein andere Problem zu sein. Ich hatte schon 
öfters defekte DBs aus dem Grund ist das immer mein erster Test.

Hast du eine aktuelle Version von Firebird nicht das es ein alter bug 
ist?
Gast #3255843
Hi Alex, hallo Läubi,

eurer Idee möchte ich als erstes nachgehen, bevor ich an der 
Firebird-Version (hallo Peter II) schrauben möchte.

Tatsächlich ist (nur) Version 2.1.3 installiert.
1
df -h | grep "/tmp"

zeigt mir, das mein /tmp Verzeichnis auch nur 27 MB groß ist und während 
der Abarbeitung auf bis zu 73% belegt ist.
Vor der Abarbeitung und nach der Fehlermeldung liegt die Belegung bei 
konstant 6%.

Wie erweitert man denn von der Kommandozeile aus eine Partition?
Gast #3255877
Name schrieb:
> offenbar das Home-Verzeichnis. Hier ließe sich noch einiges an Platz
> schaffen und für /tmp abzweigen

nein diese ausgabe hilft nicht weiter.

mache mal

fdisk /dev/sda [enter]
p [enter]

q [enter]

dann zeige uns die ausgabe.
Gast #3255910
Name schrieb:
> bitte sehr - und Danke für eure Hilfe

ja, es gibt wirklich keine Lücke. Man müsste sda8 und sda9 löschen und 
dann neu anlegen, dabei gehen die Daten darauf verloren.

Es gibt auch tools die die partion verschieben können, aber davor auf 
jeden Fall ein backup machen.

Ich finde so viele partionen auch übertrieben und unhandlich.
Gast #3255912
nein, eine GUI für Systemaufgaben ist leider nicht vorhanden, es handelt 
sich um ein embedded System, mit integrierter SSD.
Lediglich der Midnight Commander liegt mir vor.

Eine komplette Sicherung der SSD hab ich vorsichtshalber gemacht.
Gast #3255934
Läubi .. schrieb:
> Du kannst auch tmp mal auf home "umbiegen"

wie wird denn so ein umbiegen gemacht?
Wenn sich hierdurch die Fehlerursache erstmal klären würde, würde ich im 
Nachgang versuchen den richtigen Weg zu gehen und die Partitionen 
anpassen (lassen)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.