allegro-Fortbildung 11 Datenbankadministration 11.4 Datenbank sperren und freigeben ".TBL gesperrt, Speichern nicht möglich (--> Handbuch S.331)" kommt manchmal, wenn man einen Datensatz speichern will. Bei PRESTO heißt es: "Bitte warten (.TBL-Datei gesperrt)". Aber nur in Netzen dürfte das passieren, in Mehrplatzanwendungen also. Denn es liegt daran, daß gerade jemand anders einen anderen Daten- satz speichert, und zu einem Zeitpunkt darf nur einer was speichern, alle anderen müssen dann warten. Da das Speichern bei einem schnellen Netz jedoch sekundenschnell erledigt ist, dürfte die besagte Meldung heute nur noch selten aufflammen. Weil die Welt nicht perfekt ist, kann es aber geschehen, daß eine Sperre nicht wieder aufgehoben wird. Sie müßten dann bis zum Sankt- Nimmerleinstag warten - oder aber wissen, wie man die Sperre durch- brechen kann. Es geht ganz leicht: Füllhorn / (Re-)Organisieren / Datenbank sperren/freigeben Auf dem Menü "Reorganisieren" sehen Sie schon gleich unter dem Punkt "Datenbank sperren/freigeben", was der momentane Zustand ist! Der Klick auf diesen Punkt löst dann jeweils das Gegenteil von dem aus, was gerade der Fall ist. Nicht ohne Rückfrage, versteht sich. >>SonderTip: Das absichtliche Sperren ist nützlich für den Systemverwalter, z.B. wenn er schnell mal eine Kopie der Datenbank machen will. Denn während des Kopierens wäre es schlecht, wenn plötzlich jemand einen Satz zu speichern versuchen würde. In die Kopier- funktion des ORG-Menüs ist aber dieses Sperren bereits eingebaut! Gut zu wissen: In die Standard-Kopierfunktionen (geben Sie h backp) sind jedoch die FLEX-Befehle zum Sperren und Freigeben schon eingebaut. Daher kann man das Kopieren unbedenklich jederzeit auch im laufenden Betrieb auslösen. (Es handelt sich um die FLEX-Befehle "set tbl lock" und "set tbl free") Die Sperre ist nur eine SCHREIBsperre, keine LESEsperre! Suchen kann man also durchaus, auch im Arbeitsspeicher editieren, soviel man will. Nur eben nichts speichern. Es kann aber passieren, daß man auch die lesende Benutzung verhindern will, z.B. wenn der Index zu erneuern ist. Dann muß man zuerst alle Nutzer zum Verlassen der Datenbank auffordern. (Leider ist kein globaler Rausschmiß per FLEX oder so möglich.) Vorher schon setzt man aber die sog "Totalsperre" auf dem Menü "Reorganisieren". Ist diese Sperre gesetzt, kann niemand mehr a99/alcarta oder PRESTO/APAC starten - es kommt der Hinweis, daß die Datenbank momentan nicht zugänglich ist. Es sei denn, man hat Berechtigung 9 oder höher, aber diese sollte der Systemverwalter für sich alleine reservieren. Er käme sonst auch selber nicht mehr rein. Experten fragen: Wie funktioniert das? 1. Die Schreibsperre wird gesetzt, indem das erste Byte der .TBL-Datei (Standard: cat.tbl) auf den Wert 1 gesetzt wird. Das Programm schaut vor dem Speichern, was da steht, und speichert nur dann, wenn da eine 0 steht. 2. Die Totalsperre dagegen wird durch eine kleine Datei bewirkt, deren Name cat.sgf ist (bzw. statt "cat" der jeweilige Datenbankname). (sgf bedeutet "Signalfile") Das Signalfile hat nur eine Zeile, die mit 1 beginnt, wenn die Sperre gesetzt ist und mit 0, wenn nicht. Natürlich kann der Systemverwalter diese Datei manuell manipulieren oder gar löschen, auch das würde die Sperre nebenwirkungsfrei aufheben. Hinter der 1 kann eine Textzeile stehen. Diese wird angezeigt, wenn jemand einzusteigen vesucht! Der SysVerwalter kann also auf diesem Wege eine freundliche Mitteilung absetzen an diejenigen, die unerschrocken den Einstieg versuchen. Also: Anders als bei Schreibsperre und Satzsperre wird nichts irgendwo direkt in die Datenbank geschrieben, die SGF-Datei ist das ganze Geheimnis. |