     RESTORE(MUTOS)               DABA16                RESTORE(MUTOS)

     NAME
          restore - Wiederherstellen  nach  einem  DBBS-  oder  MUTOS-
          Absturz

     UEBERSICHT
          restore [ -s ] [ -a ] [ -f ] [ +/-p ] [ +/-w ]
          [ -S ] [ -P ] { dbname }

     BESCHREIBUNG
          Restore wird zum Wiederherstellen einer Datenbank verwendet,
          nachdem  ein DABA- oder MUTOS-Absturz auftrat.  Das Kommando
          sollte stets nach einer abnormalen  Beendigung  abgearbeitet
          werden, um die Integritaet der Datenbank zu sichern.

          Um restore zu benutzen, muessen Sie der  DBA  der  Datenbank
          oder   der  DABA-Systemverantwortliche  (Verwendung  des  -s
          Flags) sein.

          Wurden keine Datenbanken spezifiziert, werden alle Datenban-
          ken,  fuer  die  Sie der DBA sind, zurueckgespeichert.  Alle
          Datenbanken    werden    bearbeitet,    wenn    der    DABA-
          Systemverantwortliche das -s Flag spezifiziert hat.

          Wenn das -a Flag spezifiziert wurde, werden sie gefragt, be-
          vor  restore eine Serie von Aktionen ausfuehrt.  Es ist rat-
          sam, dieses Flag zu verwenden, wenn vermutet wird, dass  die
          Datenbank  in  schlechtem  Zustand  ist.  Die Verwendung von
          /dev/null als Eingabe mit dem -a Flag liefert  eine  Bericht
          der Probleme der Datenbank.
          Wenn waehrend des Rueckspeichers der Datenbank keine  Fehler
          auftraten,  wird purge mit  den  gleichen  Flags wie bei re-
          store, aufgerufen, um ungewuenschte  und  temporaeren  Files
          zu entfernen.
          Mit dem Flag -P wird der Aufruf von purge unterdrueckt. Wenn
          purge erfolgreich beendet wurde, wird sysmod gerufen, mit -S
          der Aufruf von sysmod unterdrueckt.
          Restore kann mit den purge Flags -f und/oder  -p  aufgerufen
          werden.  Nicht zuzuordnende Files und verfallende Relationen
          werden nicht entfernt, wenn nicht die  entsprechenden  Flags
          gesetzt sind.
          Im Falle einer unvollendeten destroy, create oder index Ope-
          ration  wird  restore  keine  Files fuer teilweise erstellte
          oder zerstoerte Relationen loeschen.  Purge muss mit dem  -f
          Flag aufgerufen werden, um dies auszufuehren.

          Restore sperrt waehrend seiner Arbeit die  Datenbank.   Wenn
          eine  Datenbank  besetzt ist, wird restore das berichten und
          dann zur Bearbeitung  der  naechsten  Datenbank  uebergehen.
          Wenn die Standardeingabe kein Terminal ist, wird restore auf
          die Freigabe der Datenbank warten.  Wenn das -w Flag gesetzt
          ist,  wird  restore in keinen Falle (auch nicht bei Standar-
          deingabe) warten.  Wenn +w gesetzt ist, wird stets gewartet.

          Restore kann eine Datenbank nach einer  Aenderungsoperation,
          die das Fuellen des Stapel-Files beendet hat, wiederherstel-
          len (komplettieren).  Aenderungen, die dieses  Stadium  noch
          nicht  erreicht  haben,  sind zu wiederholen.  Ebenso werden
          modify Operationen, die das  Wiederherstellen  der  Relation
          beendet  haben,  (die relation- und die attribute-Relationen
          sind noch zu aktualisieren), komplettiert.
          Wenn destroy operierte, wird es stets komplettiert, waehrend
          ein create stets ausgesetzt wird.
          Nach dem Abbruch des Loeschens einer Relation mit einem  In-
          dex, kann es vorkommen, dass restore berichtet, dass ein Se-
          kundaerindex ohne korrespondierende Primaerrelation gefunden
          wurde.

          Wenn waerend der Wiederherstellung ein Interrupt (Signal  2)
          erhalten wird, erfolgt ein Abschliessen der bearbeiteten Da-
          tenbank und die Bearbeitung der naechsten.  Quit (Signal  3)
          beendet die Arbeit von restore.


     BEISPIEL[E]
          restore -f dt
          restore -a grants < /dev/null

     DIAGNOSE


          Um die Fehlernachrichten zu verstehen, muss man die  Verbin-
          dung zwischen den einzelnen Katalogen kennen.
          Dazu folgende Ausfuerungen:

          1.   Eine Relation besteht aus genau einem MUTOS-File, einem
               Eintrag  im  Relationen-Katalog "relation" und mehreren
               Eintraegen im Attribut-Katalog (fuer jede  Domaene  ei-
               nen):
               Im Attribut-Katalog "attribute" wird fuer jede  Domaene
               der Name der Relation und deren Eigentuemer mit verwal-
               tet. Die Kataloge sind im Systemkatalog wie normale Re-
               lationen  verzeichnet,  nur  dass  sie  im  Relationen-
               Katalog den Status Katalog-Relation erhalten.

          2.   Index-Relationen sind :

               a)   wie normale Relationen verzeichnet, nur  dass  sie
                    im Relationen-Katalog den Status INDEX erhalten.

               b)   Im Katalog "index" ist der Name der Index-Relation
                    und der Name der Primaerrelation verzeichnet.

               c)   Die Primaerrelation erhaelt im  Relationen-Katalog
                    den Status Primaerrelation.

          3.   Sichten (virtuelle Relationen) sind :

               a)   wie normale Relationen verzeichnet, nur  dass  sie
                    im Relationen-Katalog den Status Sicht erhalten

               b)   Der Name und die Definition der Sicht sind im  Ka-
                    talog "tree" abgelegt.

               c)   Der Name der Basisrelation der Sicht und der  Name
                    der Sicht wird im Katalog "references" eingetragen
                    (pro   Basisrelation   ein   Eintrag)    und    im
                    Relationen-Katalog wird fuer die Basisrelation ein
                    Verweiszaehler erhoeht.

          4.   Integritaeten :

               a)   Die Relationen, fuer  die  besodere  Integritaets-
                    bedingungen gelten, erhalten im Katalog "relation"
                    den zusaetzlichen Status INTEG.

               b)   Im Katalog "integrities" sind die Namen der  Rela-
                    tionen,  die Namen der Relationen, fuer die beson-
                    dere  Intigritaetsbedingungen  geltenen,  und  ein
                    Verweis  auf  deren Definitionen im Katalog "tree"
                    enthalten.

               c)   Die Namen der Relationen, fuer  die  Integritaets-
                    bedingungen  gelten,  und die Definition der Inte-
                    gritaetsbedingungen sind im Katalog  "tree"  abge-
                    legt.

          5.   Zugriffsrechte :

               a)   Die Relationen, die Zugriffsrechte  besitzen,  er-
                    halten im Katalog "relation" den Status PROTECT.

               b)   Im Katalog "protect" sind die Namen  der  Relatio-
                    nen,  fuer die besondere Zugriffsrechte gelten so-
                    wie die Verweise auf deren Definition  im  Katalog
                    "tree" enthalten.

               c)   Die Namen der Relationen, die Zugriffsrechte haben
                    und  die  Definitionen  der Zugriffsrechte sind im
                    Katalog "protect" verzeichnet.

               d)   Enthaelt die Qualifikation der  Befugnisdefinitio-
                    nen  eine zusaetzliche Relation, werden im Katalog
                    "references" die Namen der zusaetzlichen  Relatio-
                    nen  und die Relation, fuer die die Befugnis defi-
                    niert wird,  eingetragen.  Im  Katalog  "relation"
                    wird  fuer  die zusaetzliche Relation ein Verweis-
                    zaehler erhoeht.


          Alle Diagnosen werden durch ein Tupel einer der  Systemrela-
          tionen ergaenzt.

          "No relation for attribute(s)" - Die aufgelisteten Attribute
               besitzen   keinen  korrespondierenden  Eintrag  in  der
               relation-Relation.
          "No primary relation for index" - Das angezeigte  Tupel  ist
               ein  Sekundaerindex,  fuer den es keine Primaerrelation
               gibt.  Die Primaerrelation wurde wahrscheinlich zersto-
               ert, und der Sekundaerindex blieb erhalten.
          "No indexes entry for primary relation" -  Das  Tupel  steht
               fuer eine Primaerrelation und die relindxd-Domaene wird
               auf Null gesetzt.  Das ist das Ergebnis  eines  unvoll-
               endeten destroy.
          "No indexes entry for index" - Das Tupel  steht  fuer  einen
               Sekundaerindex,  und  der  Index wird zerstoert werden.
               Das ist das Ergebnis eines unvollendeten destroy.
          "relname is index for" - Es wurde ein Index fuer eine Prima-
               errelation  gefunden,  die  nicht als indiziert gekenn-
               zeichnet ist.  Die Primaerrelation wird  als  indiziert
               gekennzeichnet.   Das  ist  wahrscheinlich das Ergebnis
               einer unvollendeten index-Anweisung.   Der  Index  wird
               richtig erstellt aber nicht modifiziert werden.
          "No file for" - Es gibt keine Daten  fuer  diese  Relations-
               Tupel  und das Tupel wird geloescht.  Bei einem -a Flag
               wird das Tupel nicht entfernt und purge wird nicht auf-
               gerufen.
          "No secondary index for indexes entry" - Es wurde  ein  Ein-
               trag  in  der  indexes-Relation gefunden, fuer den kein
               Sekundaerindex existiert (no relation relation  tuple).
               Der Eintrag wird geloescht.


     SIEHE AUCH
          define(ql),    index(ql),    indexr(mutos),    purge(mutos),
          sysmod(mutos)



     FEHLERQUELLEN
          Wenn keine Datenbanknamen spezifiziert  wurden,  werden  nur
          die  im  Directory  data/base  lokalisierten Datenbanken zu-
          rueckgespeichert.
