Vor jedem Zugriff unserer Software auf die Datenbank (liegt auf Server) erfolgt eine Prüfung der Datenbank auf Fehler was auch gut funktioniert. Bei einem Kunden schlägt die Prüfung einmal die Woche Alarm und die Datenbank muss repariert werden, zum Glück nur Indexfehler aber immer wieder die gleichen Tabellen. Diese Tabellen werden von einem bestimmten Modul verwendet, welches immer am Tag vor den Fehlermeldungen benutzt wird. Da das Modul / die Software auch von anderen Kunden verwendet wird und dort noch viel intensiver, und dabei keine Fehler auftreten, gehe ich davon aus, das es sich um ein Kundenspezifisches Problem handelt.
Die Frage ist jetzt: bekommt man einen Index "kaputt" durch "falsche" Update/Insert- Anweisungen oder ist in der Regel defekte Hardware verantwortlich?
Oder liegt es an der Interbaseversion 7.1 (hat sonst kein anderer, ansonsten entweder 6.5 oder Firebird 2.0)?
In der einen Tabelle werden Termine verwaltet die jede Woche aktualisiert werden (werden verschoben, deaktiviert, neue angelegt) und in der anderen Tabelle die dazugehörenden Mitarbeiter (diese werden hinzugefügt, ausgetauscht oder deaktiviert).
Dazu nun die Interpretation der Logdatei vom letzten Freitag: (Interbase wird vor Datensicherung per Batchdatei beendet)
1) der Interbase-Server wurde nicht planmäßig nach der Datensicherung gestartet (eigentlich immer zwischen 1:00 und 2:00 Uhr) weil die Datensicherung nicht ordnungsgemäß beendet wurde
2) beim ersten Zugriff auf Datenbank um 8:20 Uhr wird Indexfehler festgestellt
3) nach dem dritten Reparaturversuch um ca. 8:40 Uhr mit korrekten Backup/ Restore konnte wieder mit der Datenbank gearbeitet werden.
Auszug aus
IB-Logdatei
--------------------
DC01 (Server) Fri Jul 10 07:53:25 2009
Server: setting SWEEP_QUANTUM to 250, USER_QUANTUM to 250, SWEEP_YIELD_TIME to 1 ms
and MAX_THREADS to 1
DC01 (Server) Fri Jul 10 07:53:25 2009
SERVER/set_process_affinity: setting ProcessAffinityMask to 1
DC01 (Client) Fri Jul 10 07:53:25 2009
Guardian starting: C:\Programme\Borland\InterBase\bin\ibserver.exe
DC01 (Server) Fri Jul 10 07:56:14 2009
Server: setting SWEEP_QUANTUM to 250, USER_QUANTUM to 250, SWEEP_YIELD_TIME to 1 ms
and MAX_THREADS to 1
DC01 (Server) Fri Jul 10 07:56:14 2009
SERVER/set_process_affinity: setting ProcessAffinityMask to 1
DC01 (Client) Fri Jul 10 07:56:14 2009
Guardian starting: C:\Programme\Borland\InterBase\bin\ibserver.exe
DC01 (Server) Fri Jul 10 08:20:27 2009
Database: C:\PROGRA~1\SR\HM\TABELLEN\HM_DB.GDB
Index 3 is corrupt on page 17065 in table P_WOPLANPERS (226)
DC01 (Server) Fri Jul 10 08:25:50 2009
INET/inet_error: read errno = 10054 client host = TECHNIK connection name = dc01 user name = MSCHMIDT
DC01 (Server) Fri Jul 10 08:25:54 2009
INET/inet_error: send errno = 10054 client host = TECHNIK connection name = dc01 user name = MSCHMIDT
DC01 (Server) Fri Jul 10 08:37:58 2009
Database: C:\PROGRA~1\SR\HM\TABELLEN\HM_DB.GDB
Index 3 is corrupt on page 17065 in table P_WOPLANPERS (226)
DC01 (Server) Fri Jul 10 08:39:50 2009
Database: C:\PROGRA~1\SR\HM\TABELLEN\HM_DB.GDB
Index 3 is corrupt on page 17065 in table P_WOPLANPERS (226)
DC01 (Server) Fri Jul 10 08:42:18 2009
INET/inet_error: read errno = 10054 client host = TECHNIK connection name = dc01 user name = MSCHMIDT
------------------------