Datenbank kopieren

--> `Hinweise für Systemverwalter` 
Diese Prozedur erstellt eine genaue Kopie der Datenbank, d.h. aller Dateien, die zu der momentan benutzten Datenbank gehören. 
Sie geben einen Verzeichnisnamen für die Kopie ein, alles andere macht das Programm. 
Es gibt zwei Kopie-Typen: 

•	`Normalkopie:` Sie erhalten in einem Ordner Ihrer Wahl eine Datenbank, die unabhängig benutzt werden kann! (Dazu gehören neben den Daten auch einige Parameterdateien u.a.) Also können Sie die Kopie weitergeben an Interessenten, die diese Datenbank nutzen wollen. 
•	`Sicherungskopie:` Damit kann im Fall des Falles die Datenbank wiederhergestellt werden. Dann sollte der Kopie-Ordner aber auf einer anderen Platte liegen! Wenn z.B. die Datenbank auf Ihrem PC liegt, könnten Sie ein Verzeichnis auf dem Fileserver wählen, bzw. umgekehrt. Denn bei einer Datensicherung kommt es darauf an, daß man auch gegen den denkbaren Fall einer völligen Zerstörung der Platte oder gar Abbrand des Serverraums gesichert ist.  

Während des Kopiervorgangs wird die Datenbank für Schreibzugriffe gesperrt, damit die Kopie konsistent ist. (Wichtig bei Mehrplatzsystemen.) 

Für den Typ "Sicherungskopie" gilt: 
Den Ordner, wo die Sicherungskopie liegt, merkt sich das System unter dem Namen DbBack in der INI-Datei. Wenn dann der Zeitpunkt kommt, eine Restaurierung machen zu müssen, ist dieser Name sofort präsent. Und wenn die nächste Sicherungskopie zu machen ist, brauchen Sie keinen Namen mehr einzugeben, sondern der alte wird vorgeschlagen. 
Tip: Für erhöhte Sicherheit können Sie jedesmal einen neuen Ordnernamen wählen, z.B. d:\backup\20110131 usw., also mit dem Datum als Name. In diesen Ordner wird beim nächsten Mal die dann aktuelle LOG-Datei kopiert, mit einem _ vor dem Namen, also _cat.log statt cat.log. Damit wird es dann möglich, eine ältere Sicherungskopie heranzuziehen, wenn die letzte schon schadhaft war, und dann die angefallenen Logdateien eine nach der anderen einzuspeisen.

Achtung: Vor dem Restaurieren nicht zuerst die Sicherungskopie-Datenbank reorganisieren lassen, denn dabei werden neue Satznummern vergeben und die stimmen dann nicht mehr mit denen der Sicherungskopie und deren LOG-Datei überein. 
Andererseits: Wenn man reorganisiert hat ("Datenbank ganz neu aufbauen"), dann direkt danach eine Sicherungskopie und LOG-Datei löschen, denn die zu dem Zeitpunkt exisiterende LOG-Datei ist dann unbrauchbar, weil darin die Satznummern nicht mehr stimmen.

Notbehelf für alle Fälle
Aber was tun, wenn a99 gar nicht mehr startet, die Datenbank also nicht mehr geöffnet werden kann? Dann ist es ja auch nicht möglich, das ORG-Menü aufzurufen und die Restaurierung anzustoßen! Ist dann alles verloren? Keineswegs. Die Sicherungskopie ist auf alle Fälle noch da, und wenn die LOG-Datei vorhanden ist, kann immer noch der Zustand vor dem Zusammenbruch restauriert werden. Für diesen Zweck legt die Backup-Routine eine eigene Prozedur an, und zwar in Form einer DOS-Stapeldatei. Diese liegt dann auf dem Datenverzeichnis, also direkt bei den Daten. Wenn man sie startet, erledigen die DOS-Programme die gesamte Arbeit, anschließend kann a99 die Datenbank wieder öffnen. Diese Prozedur heißt  xyzREST.BAT, wenn "xyz" der Name Ihrer Datenbank ist, also z.B. catrest.bat. Dann starten Sie die Restaurierung so:  xyzrest , einzugeben in einem DOS-Fenster direkt auf dem Datenverzeichnis oder im Kopie-Ordner. 

Wenn Sie mehr wissen wollen
Wenn Sie den Modus "Sicherungskopie" wählen, wird die LOG-Datei gelöscht, also die Protokolldatei der Datenbank. Das ist notwendig, weil alle nachfolgenden Änderungen dann in einer neuen LOG-Datei festgehalten werden. Diese bildet dadurch den genauen Anschluß an die Sicherungskopie. Wenn eine Restaurierung nötig wird, kann deshalb aus der Sicherungskopie und der LOG-Datei wieder exakt der Zustand vor dem Zusammenbruch hergestellt werden! Das erledigt die Prozedur `"Datenbank restaurieren"`, die Sie über das Reorganisieren-Menü starten können. 
Im Modus "Sicherungskopie" wird außerdem die kopierte Datenbank gesperrt, damit dort nicht versehentlich hineingeschrieben wird. 
Eine "normale Kopie" ist dagegen eine Datenbank, die anschließend unabhängig und vollwertig als solche benutzt werden kann. 
Es gibt noch andere Möglichkeiten, Datensicherung zu organisieren. Mehr dazu steht im `Handbuch`, Kap. 0.7. Die Kopiermethode, wie sie hier realisiert ist, geht am schnellsten und bequemsten. Sie setzt aber voraus, daß man Zugriff auf eine Platte hat, wo genügend Platz ist. 

Ausgeführt wird die Prozedur von _backup.flx , der wiederum  _backup.bat  startet  Darin wird auch die Datei  xyzREST.BAT  erstellt.

Achtung Systemverwalter:
Bei sehr großen Datenbanken machen es Systemverwalter oft so, daß sie mit einem eigenen Sicherungssystem nachts die gesamte Platte pauschal auf Band sichern. Dann bleibt speziell für allegro weiter nichts zu tun.
Zu empfehlen ist aber: die LOG-Datei dabei NICHT mit zu kopieren, sondern im Gegenteil zu löschen!! Denn alles, was sie enthält, ist in der Datenbank schon drin! Worauf es ankommt, ist die NACH dem Kopieren bei der weiteren Arbeit neu entstehende LOG-Aufzeichnung, denn die enthält dann alles, was in der kopierten Datenbank noch nicht drin ist. 
Kurz: Datenverzeichnis komplett kopieren, nur LOG-Datei nicht, sondern diese löschen. (Evtl. an einem anderen Ort archivieren, wenn man ungern etwas löscht.)

Ist dies so nicht machbar (weil eben einfach ganz stur alles kopiert wird) : Wenn eine solche LOG-Kopie zurückgeholt wird, dann unbedingt dafür sorgen, daß die inzwischen bei der weiteren Arbeit entstandene, aktuelle LOG-Datei NICHT überschrieben wird! Denn die enthält ja gerade die Daten, wie gesagt, die noch nicht in der Kopie waren!! 

Eigener Aufruf der Wiederherstellungsroutine
Wer seine Sicherung selber organisiert, kann auch das Restaurieren in ein eigenes Skript (Batch oder Shellscript) einbauen: 
1. Zuerst die Sicherungskopie zurückholen, aber nicht die damit evtl. zusammen gesicherte LOG-Datei. 
2. So muß dann der Befehl aussehen, wenn es sich um die Demo-Datenbank auf c:\allegro\demo2 handelt: 
(und auf dem Datenpfad liegt die aktuelle LOG-Datei, also  c:\allegro\demo2\cat.log )

   upd -fp -dc:\allegro\demo2 -bcat -F -uc:\allegro\demo2\cat.log -ka 

Zu starten wäre dies auf dem Programmverzeichnis, standardmäßig c:\allegro.
Man erkennt leicht, wie man den Befehl für eine eigene Datenbank modifizieren muß.

?Handbuch=h ac0-7 
?Normalkopie:=x var 'N'\ins #uTX\exec X _backup 
?Sicherungskopie:=x var 'Y'\ins #uTX\exec X _backup 
?"Datenbank restaurieren"=h org 
?Hinweise für Systemverwalter=h =Achtung Systemverwalter