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
>> 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?
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?
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?
Peter II schrieb:> Hast du den DB check mal durchlaufen lassen?
leider bin ich mit den Optionen überfragt.
Anbei mal die möglichen Optionen, welche mir angeboten werden.
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.
Name schrieb:> führt zu:> bad parameters on attach or create database> -secondary server attachments cannot validate databases
steht doch alles da, da DB muss lokal als Datei vorliegen.
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.
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?
Name schrieb:> Durch eine wachsende Text-Datei war die Speicherkarte einmal randvoll
Eventuell hast du nicht mehr genug Temp-Speicher frei und die DB kommt
damit nicht klar? Kannst du das ganze mal auf einem "normalem" PC laufen
lassen oder ein größere Speicherkarte verwenden?
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?
Peter II schrieb:> fdisk - die Frage was hinter der Partition kommt.
offenbar das Home-Verzeichnis. Hier ließe sich noch einiges an Platz
schaffen und für /tmp abzweigen
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.
Name schrieb:> offenbar das Home-Verzeichnis. Hier ließe sich noch einiges> an Platz schaffen und für /tmp abzweigen
Du kannst auch tmp mal auf home "umbiegen" wieso hast du überhaupt
soviele Partitionen?
Hat das system eine GUI? Dann gibt es dafür auch Graphische tools, oder
die Karte temporär an einem anderem Rechner anschließen.
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.
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.
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)
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.