~~NOTOC~~ ====== Schulscharfe Sicherung ====== **Bitte exportieren Sie Ihre selbsterstellten Berichte vor einer Sicherung unbedingt mittels //Datei / Verwaltung / Berichtsbibliothek//, da diese nicht mitgesichert werden!** Die schulscharfe Sicherung dient dazu, den Datenbestand einer Schule aus einer Datenbank, in der die Daten mehrerer Schulen gespeichert sind, gezielt ohne Auswirkungen auf die anderen zu sichern und ggf. wieder einzuspielen. Bei der Rücksicherung gehen alle Änderungen, die in der Zwischenzeit gemacht wurden, verloren. Die ASV-Datensicherung kann auf zwei Arten erfolgen: * [[alle:technik:backup:sicherung#datensicherungsfunktion_aus_der_anwendung_heraus|über die Anwendung selbst]]: Diese Art steht der Schule selbst zur Verfügung. Eine [[einfuehrung:verwaltung:sichern|Sicherung]] bzw. [[einfuehrung:verwaltung:ruecksichern|Rücksicherung]] kann nur von Benutzern erstellt werden, für die die Berechtigung besteht. * [[alle:technik:backup:sicherung#kommandozeilenprogramm_in_einer_dss-installation|über das Kommandozeilentool dbctl.cmd]]: Dieses Skript unterstützt die technischen Administratoren beispielsweise bei regional-zentral betriebenen Installationen mit mehreren Schulen, um eine Datensicherung einzelner Schulen zu ermöglichen. Das gezielte Backup lässt sich unter Windows über die Aufgabenplanung gezielt automatisieren. ===== Kommandozeilenprogramm in einer DSS-Installation ===== Im Ordner ''bin'' einer DSS-Installation steht das Kommandozeilentool ''dbctl.cmd'' zur Verfügung. Genereller Aufruf des Programmes: bin\dbctl [options] [commands] [command options] Bitte beachten Sie, dass bei einer regional-zentralen Installation, die Ihr Sachaufwandsträger eingerichtet hat, kein direkter Zugriff auf die Datenbank bzw. die ASV-Serverinstallation besteht. Eine Sicherung über den hier beschriebenen Weg ist deshalb von der Schule nicht möglich. In diesem Fall wird die Sicherung durch den Sachaufwandsträger in Absprache mit der Schule geregelt. Die Möglichkeit der [[alle:technik:backup:sicherung#datensicherungsfunktion_aus_der_anwendung_heraus|Sicherung über die Programmoberfläche]] besteht aber nach wie vor. Das Sicherungstool ermöglicht zwar die Sicherung einzelner Schulen (Mandanten), jedoch sollten zusätzlich auch regelmäßig Datensicherungen der gesamten Datenbank erstellt werden. Dies kann z. B. mit Hilfe des [[alle:technik:backup:service|Aktualisierungsdienstes]] erfolgen. ==== Aufruf des Tools ==== Das Datenbanktool dbctl besitzt folgende Struktur bei seinem Aufruf | dbctl.cmd | allgemeine Parameter | Aktion | Detail der Aktion | | | -u, ... | backup, restore, delete, encrypt, verify | -i, ... | Die genauen Parameter erhalten Sie durch den Aufruf ''dbctl.cmd -help''. Im Folgenden wird jede der genannten Aktionen an Beispielen genauer erläutert. Für Nutzer anderer Betriebssystem unterscheidet sich die Verwendung der schulscharfen Sicherung nur im Behfehlsnamen (''dbctl'' statt ''dbctl.cmd'') und der Pfadangaben mittels Slash (''/'') statt Back-Slash (''\''). ==== Erstellung der Konfigurationsdatei ==== Führen Sie folgende Schritte durch: === Anlegen der Konfigurationsdatei ''dbsettings.ini'' === In der Konfigurationsdatei werden alle benötigten Daten zur Verbindung mit der Datenbank hinterlegt. # host IP oder DNS-Name database.host=localhost # PostgreSQL DB Port database.port=5432 # PostgreSQL ASV Datenbank database.name=asv # DB User muss immer "asv" sein database.user=asv # Passwort des DB User asv database.password=geheim123 Für den ASV-Server-School verwenden Sie: database.schema=asv database.user=asv database.password=asv database.url=jdbc:h2:../database/asv;MODE=LEGACY;IFEXISTS=FALSE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;COMPRESS=true;FILE_LOCK=NO;WRITE_DELAY=30000;CACHE_SIZE=65536;LOCK_MODE=3;MAX_COMPACT_TIME=60000;SCHEMA_SEARCH_PATH=PUBLIC,${database.schema} database.driver=org.h2.Driver Verschlüsseln Sie die angelegte Datei ''dbsettings.ini'' mit folgendem Befehl: dbctl.cmd -d dbsettings.ini encrypt -f dbsettings.ini === Anlegen der Konfigurationsdatei ctlconfig.ini === In der Datei ''ctlconfig.ini'' können die Parameter für den Aufruf des Programmes gespeichert werden, so dass sie nicht jedesmal über die Kommandozeile eingegeben werden müssen. Diese Datei muss zusätzlich zur Konfigurationsdatei ''dbsettings.ini'' im Ordner ''.dbctl'' abgelegt werden. -d dbsettings.ini -u sys -p geheimesPasswort backup Auch diese Datei kann verschlüsselt werden. dbctl.cmd -d ctlconfig.ini encrypt -f ctlconfig.ini Der Aufruf erfolgt dann nur noch mit ''dbctl.cmd @'' bzw. ''dbctl.cmd @'' ==== Sicherung einzelner Schulen ==== Eine Sicherung einer einzelnen Schule mit Schulnummer **n** wird mit folgendem Befehl erstellt: Sie erhalten als Datei eine .sba Datei im Unterordner ''svp_data'', welche Sie auch nur mit dem Kommandozeilentool ''dbctl'' wieder zurücksichern können dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort backup -i n Nach Ausführung dieses Befehls erhält man etwa folgende Ausgabe: {{alle:technik:backup:sss_backup.jpg|}} Sollen alle Schulen in einer Installation schulscharf gesichert werden, verwendet man folgenden Befehl: dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort backup Sollen mehrere Schulen** in getrennten Dateien** gesichert werden, wird die Liste der Schulnummern nach dem Parameter i angehängt. **Beispiel**: Die Schulen mit der Schulnummer 9001 bis 9010 sollen schulscharf gesichert werden. Die Schule 9008 soll dabei unberücksichtigt bleiben. dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort backup -i 9001 9002 9003 9004 9005 9006 9007 9009 9010 bzw. kürzer dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort -b saveDir backup -i 90.. -e 9008 Erklärung der Parameter: * -i Liste der Schulen, die in einzelnen Dateien gesichert werden sollen, der Punkt dient dabei als Wildcard * -e Liste der Schulen, die nicht mitgesichert werden sollen * -b Basisverzeichnis für die Sicherungen * -u Kennung eines Systemadministrators * -p Passwort für den bei -u genannten Systemadministrator Dieses Sicherungsskript kann automatisiert regelmäßig gestartet werden. Die Einrichtung einer regelmäßigen Aufgabe unter Windows ist [[alle:technik:backup:batch#einrichtung_einer_automatisierten_datenbanksicherung|hier]] beschrieben. ==== Löschen einzelner Schulen aus einer gemeinsamen Datenbasis ==== [[alle:technik:dss:stoppen|Stoppen]] Sie den laufenden Prozess des DSS! Fertigen Sie eine Sicherung der kompletten Datenbank an. Geben Sie zum Löschen einer einzelnen Schule zum Beispiel folgenden Befehl ein: dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort delete -i 9310 Falls der Befehl erfolgreich ausgeführt wird, erhalten Sie etwa folgende Bildschirmanzeige: {{alle:technik:backup:dbctrl_schuleloeschen01.jpg?nolink|}} Durch diesen Aufruf wird die Schule mit der Schulnummer 9310 gelöscht. Das Löschen einer Schule kann mehrere Minuten dauern. Falls sich die Anzeige in der Eingabeaufforderung nicht ändert, ist das kein Fehler. Am Ende des Prozesses sind alle Einträge zu einer Schule gelöscht worden. ==== Löschen einer einzelnen Zeitscheibe einer Schule==== **Fertigen Sie zunächst eine Sicherung der kompletten Datenbank an.** Geben Sie zum Löschen einer **Zeitscheibe** einer einzelnen Schule zum Beispiel folgenden Befehl ein: dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort delete -i 9310 -s Zeitscheiben-Kürzel Falls der Befehl erfolgreich ausgeführt wird, erhalten Sie etwa folgende Bildschirmanzeige: {{alle:technik:backup:dbctrl_schuleloeschen01.jpg?nolink|}} Durch diesen Aufruf wird die Zeitscheibe mit dem Kürzel Zeitscheiben-Kürzel der Schule mit der Schulnummer 9310 gelöscht. Dieses Vorgehen ermöglicht es beispielsweise, ein neu angelegtes Schuljahr nochmals zu löschen und den Prozess zu wiederholen. ACHTUNG! Führen Sie den folgenden Befehl **unter keinen Umständen** für das aktuelle Schuljahr oder das Vorjahr aus! Beispiel: Löschen des Schuljahres 2021/22 (= Planungsschuljahr während des Schuljahrs 2020/21) der Schule mit Schulnummer 9310: dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort delete -i 9310 -s 2021 Beispiel: Löschen des Schuljahres STATISTIK der Schule mit Schulnummer 9310: Vor dem Löschen der Statistik-Zeitscheibe muss diese zwingend zuvor umbenannt werden! Nehmen Sie bezüglich der Notwendigkeit von deren Löschung zunächst Kontakt zum ASV-Kernteam auf! - Umbenennung per SQL-Statement: update asv.svp_wl_schuljahr set schluessel='HANSI' where schluessel='STATISTIK'; - dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort delete -i 9310 -s HANSI - Rück-Umbenennung per SQL-Statement: update asv.svp_wl_schuljahr set schluessel='STATISTIK' where schluessel='HANSI'; Anmerkung: Die Umbenennung ist notwendig, da das Löschen von Schuljahren mit dem Schlüssel "STATISTIK" programmatisch nicht zugelassen wird. ==== Rücksichern der schulscharfen Sicherung in eine bestehende Datenbank ==== Ist eine Schule bereits in einem Datenbestand enthalten, kann eine schulscharfe Sicherung mit dem Befehl dbctl.cmd -d dbsettings.ini -u sys -p geheimesPasswort restore -af eingespielt werden. Nach dem Löschprozess ersetzt das eingespielte Backup den Datenbestand. Nach Abschluss einer Rücksicherung empfiehlt sich die unverzügliche Überprüfung der Aktualität von Programmversion, Wertelisten und Plausibiltäten über //Datei - Verwaltung - ASD-Schnittstelle/// Schaltfläche Aktualität prüfen. ==== Prüfen der Datenbankstruktur ==== Es können verschiedene Fehlerkonstellationen einen Analyse der Datenbankstruktur erforderlich machen. Dazu dient der Befehl ''dbctl.cmd verify''. Die genauere Verwendung ist auf der Seite [[alle:technik:backup:verify|Prüfung der Datenbankstruktur]] beschrieben.