Fortbildung 11-4: Datenbank sperren/freigeben

Bernhard Eversberg ev at buch.biblio.etc.tu-bs.de
Mi Okt 20 08:42:42 CEST 2004


                                                    20-10-2004
Fortbildungskurs

   11    Datenbankadministration
   11.4    Datenbank sperren und freigeben


".TBL gesperrt, Speichern nicht möglich (S. 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 sollte das passieren, in Mehrplatzanwendungen
also. Denn es liegt daran, daß gerade jemand anders einen Daten-
satz speichert, und zu einem Zeitpunkt darf nur einer 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.

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. 

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 nicht 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 wird durch eine kleine Datei bewirkt, deren
   Name   cat.sgf  ist (bzw. statt "cat" der jeweilige Datenbankname).
   (sgf bedeutet "Signalfile")
Sie 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 rückstandsfrei 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.



Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329, 
D-38023 Braunschweig, Germany
Tel.  +49 531 391-5026 , -5011 , FAX  -5836
e-mail  B.Eversberg at tu-bs.de  




Mehr Informationen über die Mailingliste Allegro