(Re-)Organisieren
`Angaben zur Datenbank` 
`Kurzfassung` 
_5 Sorry, kein Zugriff 
Hier sind Funktionen versammelt, die bei jeder Datenbank gelegentlich wichtig sein können. %=x var B`ins #uvB`var D`ins #uvD`var K1`ins #uvK`var "frei"`if tbl var "gesperrt"`ins #uvG`var "frei"`if Lock var "gesperrt"`ins #uvR%
Eine `Datenbank besteht aus mehreren Dateien` mit unterschiedlichen Funktionen und Inhalten. Alle diese Dateien können reorganisiert, d.h. erneuert werden. Wann so etwas nötig ist, entnehmen Sie dem Kap. 0.11.2 des Handbuchs. Im Normalbetrieb braucht man diese Funktionen nur sehr selten. 
Vertiefte Aufklärung bietet das `Handbuchkapitel 7` (Indexierung). 
Wenn eine dieser Funktionen gestartet wird, darf nicht zugleich jemand an der Datenbank arbeiten. Daher prüft dieses Programm zuerst, ob das der Fall ist, und nur dann wird die Funktion durchgeführt. 
`Hinweis für Systemverwalter` (Novell-Server) 
`Index erneuern` (Datei %#uvB.%#uvKdx)
Die Indexdatei (Standard cat.adx) enthält die alphabetischen Register. Ohne diese ist eine Datenbank nicht benutzbar. Erneuern ist nötig, wenn das Suchen nicht mehr korrekt funktioniert. Aber auch, wenn man Änderungen an den Indexparametern vorgenommen hat. Denn solche Änderungen wirken sich nicht automatisch auf alle schon vorhandenen Daten aus, sondern nur auf neue Datensätze, die anschließend eingegeben werden. Erneuert man aber den Index, werden die Änderungen auch für alle schon vorhandenen Daten wirksam. Gleichzeitig werden die Kurzanzeige und die Restriktionsdatei erneuert (s.u.) sowie die Satztabelle (Adressen der Datensätze): 
 
`Satztabelle erneuern` (Datei %#uvB.tbl)
(Die Satztabelle enthält die tatsächlichen Adressen der Sätze, d.h. in welcher Datei und auf welcher Position ein Satz sich befindet. Aus dem Index erfährt das Programm nur seine interne Nummer, das reicht nicht für den Zugriff.)
Die .TBL-Datei (Standard cat.tbl)  wird mit dieser Funktion neu produziert. Das ist höchstens dann notwendig, wenn sie unbeabsichtigt gelöscht wurde, oder wenn die Fehlermeldung "recn=...., wrong recn=..., " kommt, denn dann ist die .TBL-Datei möglicherweise nicht in Ordnung. Das Erneuern geht sehr schnell. 

`Kurzanzeige erneuern` (Datei %#uvB.stl)
Nur die .STL-Datei (das Register 0, Standard cat.stl) wird erneuert oder erstmals angelegt. Diese Datei enthält die Zeilen, die man in einem Ergebnismengen-Fenster sieht, für jeden Satz eine Zeile. Auch diese Erneuerung geht schnell. 

`Restriktionsdatei erneuern`  (Datei %#uvB.res)
Nur die .RES-Datei (Standard cat.res) wird erneuert oder erstmals angelegt. Diese Datei enthält die Angaben für die Einschränkung von Suchergebnissen, z.B. mit dem Erscheinungsjahr (falls solche Dinge in den Indexparametern definiert sind, `Kap. 10.2.9`). Geht genauso schnell wie die Erneuerung der Kurzanzeige. 

`Index kompaktieren`
Im Prinzip braucht man diese Funktion nicht, und meistens wird darauf wohl ganz verzichtet.
Wenn man den Index gerade erst erneuert oder die Datenbank neu aufgebaut hat, bringt das Kompaktieren nichts.
Nach einiger Zeit kann der Index sich vergrößert haben, da er durch viele Löschungen oder andere Aktionen intern Leerräume enthält und dadurch unnötig viel Platz beansprucht; evtl. wird der Zugriff auch etwas langsamer. Das Kompaktieren geht wesentlich schneller als die Funktion "Index erneuern", bei der die Schlüssel alle neu berechnet werden müssen! 
 
`Datenbank ganz neu aufbauen`
 (d.h. alle Dateien erneuern)
Index, .TBL- und .STL-Dateien werden gelöscht und neu erstellt, die Datensätze aus den .ALD-Dateien hintereinander eingelesen und in neue Dateien geschrieben. Gelöschte Sätze verschwinden völlig, alle Sätze werden neu durchnumeriert, nur die  Dateinummern bleiben erhalten, wenn man mehrere .ALD-Dateien hat. Anschließend sind die alten .ALD-Dateien noch unter Dateityp .c8d vorhanden. Man sollte diese alten Dateien dann löschen, wenn alles korrekt gelaufen ist, also nachdem man sich vom korrekten Arbeiten des Index überzeugt hat. 
Achtung Speicherplatz: es sollte vorher doppelt soviel Platz vorhanden sein, wie die Datenbank momentan einnimmt. 
Achtung "Alte Dateien": Wenn von einem vorher stattgefundenen Indexierungsvorgang noch ältere Dateiversionen vorhanden sind, kommt die Meldung: 
	Es gibt noch alte Dateien: <name> 
	Können diese gelöscht werden? 
Wenn die Datenbank bis zu dem Zeitpunkt ohne Problem funktioniert hat, kann man hier bedenkenlos mit [Ja] antworten, dann geht es weiter. Hat es aber Fehler im Funktionieren gegeben, sollte man lieber zuerst den Ursachen nachgehen. Reicht Kapitel 7 etc. nicht aus, um den Fall zu klären, dann wenden Sie sich an einen Kenner oder an die E-Mail-Liste.  Siehe auch unten: Protokoll einsehen. 

`Nummerntreue Erneuerung`
 (interne Nummern bleiben erhalten)
Ebenfalls ganz neu aufbauen, aber die Satznummern bleiben erhalten. Diese Funktion ist nicht grundsätzlich notwendig, aber ein Systemverwalter könnte trotzdem daran interessiert sein.
Nur zur Information: Zwangsläufig gibt es dann unbesetzte Nummern (unter denen vorher gelöschte Sätze standen). Unter dem Sonderschlüssel /[0] im Index 1 sind diese Nummern registriert und werden im weiteren Verlauf wiederverwendet, wobei die Sonderschlüssel verschwinden.
Achtung "Alte Dateien": Hier gilt dasselbe wie unter "Datenbank ganz neu aufbauen" 

`Gesamte Datenbank bereinigen`  (auch "Entlüften" genannt)
 (Leerraum beseitigen in allen .%#uvKld-Dateien)
Dabei werden die .ALD-Dateien gelesen und neu geschrieben, jeder Satz erhält die Anzahl Füllzeichen, die in der .CFG-Datei festgelegt ist (siehe Handbuch Anh.A.1, evtl. vorher ändern!). Satznummern bleiben erhalten. Für gelöschte Sätze und die Ausgangsdateien gilt dasselbe wie bei der "Nummerntreuen Erneuerung". Das Entlüften braucht nur einen Bruchteil der Zeit des Neu-Indexierens. Vorher sollte etwa genauso viel Platz frei sein, wie die zu bereinigenden Dateien beanspruchen. In der Regel werden die Dateien kleiner - das ist der eigentliche Sinn.
Achtung "Alte Dateien": Hier gilt dasselbe wie unter "Datenbank ganz neu aufbauen" 

`Einzelne Datenbankdatei bereinigen`  (Nur in einer .%#uvKld-Datei)
Hierbei kann man auswählen, wenn es mehrere Datenbankdateien gibt (Typ .xLD), welche davon "entlüftet" werden sollen. Der Systemverwalter kann bei sehr großen Datenbanken diese Funktion nutzen, wenn er weiß, welche der Dateien viele gelöschte Sätze enthalten. Dann spart diese Funktion Zeit gegenüber einer Gesamtbereinigung.
Achtung "Alte Dateien": Hier gilt dasselbe wie unter "Datenbank ganz neu aufbauen" 

`Ungenutzten Platz prüfen` 
Hiermit kann man sich zeigen lassen, wieviele gelöschte Sätze es in den verschiedenen Dateien der Datenbank gibt, und wieviel Platz diese verbrauchen. Wenn man einige tausend gelöschte Sätze hat, sollte man mal eine Bereinigung vornehmen (siehe oben)! Das Speichern neuer Sätze wird sonst allmählich langsamer. 
Damit Sie sich nicht wundern: Es gibt auch dann gelöschte Sätze, wenn man selber gar keine Löschungen vorgenommen hat, denn bei dem Speichern eines Satzes wird, falls er verlängert wurde, seine alte Fassung in der Datenbank als gelöscht markiert und der verlängerte Satz an eine andere Stelle geschrieben. 

`Letztes Protokoll einsehen` 
Die Funktionen werden ausgeführt von den Hilfsprogrammen INDEX und QRIX. Diese schreiben je ein Protokoll, und zwar eine Datei mit Namen PROTOK bzw. PROTOQ (diese entsteht auch bei der Funktion "Ungenutzten Platz prüfen"). Bei Problemen mit dem Indexieren kann man sich diese Dateien zeigen lassen. 
Nehmen Sie sich aber unbedingt das Kapitel 7 vor, wenn Sie mit irgendeiner der Funktionen auf diesem Menü Probleme haben!

`Datenbank-Kopie` 
 (auf anderes Verzeichnis, andere Platte) 
Alle wichtigen Dateien, die zur Datenbank gehören, werden automatisch auf ein beliebiges anderes Verzeichnis kopiert. Auch Konfiguration, Hilfedateien etc. gehören dazu. Die Kopie ist anschließend als unabhängige Datenbank benutzbar. Dieses Verfahren ist auch als Methode der Datensicherung anwendbar. Dazu sollte allerdings das Verzeichnis auf einer anderen Platte liegen, z.B. auf der lokalen Platte des PC, wenn die Datenbank auf einem Server liegt, oder umgekehrt.

`Datenbank-Export` 
 (Daten in einem anderen Format ausgeben) 
Sie können zwischen mehreren Möglichkeiten wählen, die Daten zu exportieren. 
Mit Hilfe die Exportsprache können jedoch unbegrenzt weitere Möglichkeiten geschaffen werden! Dazu ist allerdings ein Studium und Verständnis der Exportsprache notwendig. Das Systemhandbuch beschreibt das Konzept und die Sprache im ``Kapitel 10``. 

`Satz sperren/freigeben `  (Nr. %#nr%) 
  (für Schreibzugriffe)  
Wenn jemand mit dem konventionellen Programm PRESTO einen Datensatz bearbeitet, wird der während dieser Bearbeitung gesperrt. Andere Teilnehmer können ihn zwar lesen, aber nicht zugleich auch daran arbeiten. (Die Windows-Programme und avanti arbeiten aus guten Gründen anders!) Mit diesem Menüpunkt kann man einen Satz absichtsvoll sperren, wenn man für eine Weile jede Veränderung daran verhindern will. Der Lesezugriff bleibt auch in diesem Fall unbehindert. Erneut betätigen, um den Satz wieder freizugeben! 
Über den Menüpunkt "Extras | Datenbank | Gesperrte Sätze" kann man alle momentan gesperrten Sätze auffinden und auch wieder freigeben lassen. Das ist nützlich, weil bei der Arbeit mit PRESTO Sätze dauerhaft gesperrt zurückbleiben können, z.B. wenn während des Bearbeitens ein Stromausfall passiert.

`Datenbank sperren/freigeben `
 (Schreibzugriff insgesamt, zur Zeit %#uvG)
In manchen Situationen will man jede Veränderung an der Datenbank verhindern. Dann sperrt man die sog. Satztabelle (Dateityp .TBL). Lesezugriff ist dann immer noch uneingeschränkt möglich, aber niemand kann einen Satz abspeichern. Nochmals betätigen, um die Schreibsperre wieder aufzuheben.

`Totalsperre`%=x var "F" D B ".sgf"`var`if '1' var 'gesperrt'`if '0' var 'frei'`if '' var 'frei'`ins #uvT%
 (setzen bzw. aufheben, zur Zeit %#uvT ) 
Man könnte hier auch von einer "Zentralverriegelung" reden. 
Wenn man Aktionen wie Entlüftungen oder Datensicherung machen will, wäre es nicht gut, wenn zugleich jemand an der Datenbank arbeitet, und zwar auch nicht mit Lesezugriff. Dazu kann ein sog. "Signalfile" eingerichet werden, Das ist eine ganz einfache, kleine Datei auf dem Datenverzeichnis, in der nur als erstes Zeichen eine "1" steht und dahinter ein Kommentar. Sobald das der Fall ist, kann niemand mehr mit alcarta oder a99 "einsteigen". (Mit den konventionellen Programmen bis V21 geht es allerdings immer noch, ab V22 auch nicht mehr.) Dateiname:  cat.sgf  (wenn man die Standardparameter nutzt).
Dieser Menüpunkt stellt fest, ob die Totalsperre momentan besteht. Wenn ja, wird angeboten, sie aufzuheben, wenn nein, sie zu setzen. 

`Neue Daten von heute`
 (Datensätze, die heute neu gespeichert wurden) 
Alle neu ins System gekommen Sätze mit dem heutigen Datum werden als Ergebnismenge zusammengefaßt. Das leistet ein FLEX namens newdat.flx. Das Original dieses FLEXes funktioniert nur mit dem A-Format! Für andere Formate muß man sich eine eigene Version machen und in das eigene Datenverzeichnis legen. Der FLEX ist kommentiert, die Änderung dürfte nicht schwierig sein.

`Checking` 
 (Ein eigenes Menü für diverse Überprüfungen)
Im Register 1 gibt es z.B. unter // die Schlüssel für ungültige Sätze. Man kann prüfen lassen, ob die angegebene Zahl übereinstimmt mit der Länge des ungültigen Satzes. Ist das nicht der Fall, empfiehlt sich eine Index-Erneuerung! 
Auch die Übereinstimmung der Adressen der Datensätze mit den in der TBL-Datei angegebenen Adressen kann man prüfen lassen. 

Novell-Flag-Befehl : Hinweis für Systemverwalter [veraltet]
Auf einem Novell-Server ist nach dem Reorganisieren einer Datei diese wieder für die Mehrplatz-Benutzung freizugeben, und zwar mit dem FLAG-Befehl. Dazu ist es in der Datei `org.flx` eine Zeile zu aktivieren, und zwar mit einem kleinen Unterschied zwischen Novell 3 und 4. Das ist in der Datei kommentiert. 

?Index erneuern=X inxprod 
?Satztabelle erneuern=x var "tSatztabelle erneuern"\ins #uxO\exec X org.flx 
?Kurzanzeige erneuern=x var "sKurzanzeige erneuern"\ins #uxO\exec X org.flx 
?Restriktionsdatei erneuern=x var "xRestr.Datei erneuern"\ins #uxO\exec X org.flx 
?Index kompaktieren=x var "cIndex kompaktieren"\ins #uxO\exec X org.flx 
?Datenbank ganz neu aufbauen=x var "7Ganz neu aufbauen"\ins #uxO\exec X org.flx 
?Nummerntreue Erneuerung=x var "nNummerntreue Erneuerung"\ins #uxO\exec X org.flx 
?Einzelne Datenbankdatei bereinigen=x var "rEinzelne Datenbankdatei bereinigen"\ins #uxO\exec X org.flx 
?Gesamte Datenbank bereinigen=x var "RGesamtbank bereinigen"\ins #uxO\exec X org.flx 
?HILFE..HILFE..HILFE=h orghlp 
?Satz sperren/freigeben =X reclock.flx 
?Datenbank sperren/freigeben =X tbllock.flx 
?Totalsperre=X signfile.flx 
?Angaben zur Datenbank=X dbinfo.flx 
?Ungenutzten Platz prüfen=x var "uUngenutzten Platz ermitteln"\ins #uxO\exec X org.flx 
?Hinweis für Systemverwalter=h =Novell-Flag 
?Datenbank besteht aus mehreren Dateien=h ac0-7=0.8 
?org.flx=x var P "flex\\org.flx"\help 
?Kurzfassung=h org 
?Datenbank-Kopie=X _backup.flx 
?Datenbank-Export=X _dbxport.flx 
?Kapitel 10=h ac10 
?Letztes Protokoll einsehen=x var "INDEX-Protokoll?" n " (Nein = QRIX-Protokoll)"\yes\if yes help protok\if no help protoq`var "protok"`ftime`sho iV 
?Kap. 10.2.9=h ac10-12 
?Checking=h check 
?Handbuchkapitel 7=h ac7-1 
?Neue Daten von heute=X newdat