[Allegro] Fortbildung 11.4: Datenbank sperren/freigeben

Bernhard Eversberg ev at biblio.tu-bs.de
Do Jun 9 08:05:36 CEST 2005


                                                              20-10-2004
Fortbildungskurs                                             09-06-2005

    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.




Mehr Informationen über die Mailingliste Allegro