SESAM/SQL protokolliert alle Änderungen in der Datenbank, die seit dem Erstellen eines bestimmten SESAM-Sicherungsbestandes angefallen sind, in Logging-Dateien (siehe Abschnitt „Dateien und Tabellen für das Media-Recovery“).
Falls die Datenbank auf einer DB-Kennung liegt und die Logging-Dateien ebenfalls auf dieser Kennung liegen sollen, so müssen dafür Vorbereitungen getroffen werden, siehe Abschnitt „Datenbankdateien und Jobvariablen auf fremden Benutzerkennungen“.
Beim Logging ist zu unterscheiden:
Änderungen, die den Catalog-Space der Datenbank betreffen, d.h. Änderungen auf Grund von Utility-Anweisungen, von SQL-Anweisungen zur Verwaltung der Speicherstruktur, zur Verwaltung von Benutzereinträgen sowie zur Schemadefinition und Schemaverwaltung, protokolliert SESAM/SQL auf CAT-LOG-Dateien (CAT-Logging).
Änderungen in den Anwender-Spaces, d.h. Änderungen auf Grund von SQL-Anweisungen zum Ändern der Daten sowie auf Grund von CALL-DML-Anweisungen, protokolliert SESAM/SQL auf DA-LOG-Dateien (DA-Logging).
Logging für die Datenbank vereinbaren
Beim Anlegen der Datenbank mit der Utility-Anweisung CREATE CATALOG (siehe "Catalog-Space der Datenbank anlegen") vereinbart der Datenbankverwalter, ob die Datenbank mit Logging betrieben werden soll. Das Logging erstreckt sich dann auf die gesamte Datenbank, d.h. auf den Catalog-Space sowie die zugehörigen Anwender-Spaces. Außerdem lässt sich das Logging durch Angabe von LOG bei COPY CATALOG einschalten!
Um Datenverlust durch System- und Plattenfehler zu vermeiden, sollte eine Datenbank in der Regel mit Logging betrieben werden. Datenbankbetrieb ohne Logging bietet sich an bei Testdatenbanken oder bei Datenbanken für temporäre Daten, wenn sich Datenverlust auf andere Weise vermeiden lässt, sowie bei Datenbanken, die vorwiegend oder ausschließlich zur Datenwiedergewinnung eingesetzt werden.
Logging für Anwender-Spaces vereinbaren
Sofern das Logging für die Datenbank vereinbart ist, wird es im Standardfall auch für jeden mit CREATE SPACE erzeugten Anwender-Space durchgeführt (siehe "Anwender-Spaces anlegen, ändern und löschen"). Der Datenbankverwalter kann jedoch einen Anwender-Space auch ohne Logging vereinbaren. Mit ALTER SPACE kann der Datenbankverwalter darüber hinaus bei einem Anwender-Space, für den Logging zunächst vereinbart war, das Logging ausschalten.
Wenn Logging für die Datenbank nicht vereinbart ist, ist Logging für die Anwender-Spaces dieser Datenbank ebenfalls nicht möglich.
Einen Anwender-Space ohne Logging zu vereinbaren, kann u.U. sinnvoll sein, wenn der Anwender-Space ausschließlich Indizes oder Tabellen mit temporären Daten enthält. Zerstörte Indizes kann der Datenbankverwalter im Fehlerfall mit RECOVER INDEX wiederherstellen (siehe Abschnitt „Indizes wiederherstellen“).
Bei COPY CATALOG können reine Index-Spaces, die nicht in der logischen Datensicherung sind, von der Sicherung mit COPY ausgenommen werden. Bei einem anschließenden RECOVER muss die Klausel GENERATE INDEX ON NO LOG INDEX SPACE angegeben werden. Für die Index-Spaces werden dann keine Sicherungen eingespielt. Statt dessen werden sie zurückgesetzt und neu aufgebaut.
Bei der Entscheidung, einen Anwender-Space, auf dem ausschließlich Indizes liegen, mit oder ohne Logging zu betreiben, sollte der Datenbankverwalter beachten: Beim Betrieb ohne Logging entsteht ein Performance-Gewinn. Andererseits erfordert die Neugenerierung fehlerhafter oder zerstörter Indizes mit RECOVER INDEX mehr Zeit als die Wiederherstellung der Indizes im Rahmen des allgemeinen Reparaturverfahrens. Welches Verfahren sich anbietet, ist somit anhand des konkreten Anwendungsfalls zu entscheiden.
Logging für Anwender-Spaces ausschalten bzw. unterbrechen
Jede Unterbrechung des Logging für einen Anwender-Space dokumentiert SESAM/SQL in der Catalog-Tabelle RECOVERY_UNITS durch einen Eintrag mit dem Zeitstempel der Unterbrechung.
Ausschalten bzw. Unterbrechen des Logging durch den Datenbankverwalter
Das Logging für einen Anwender-Space kann der Datenbankverwalter mit der SQL-Anweisung ALTER SPACE vorübergehend ausschalten (siehe "Anwender-Spaces anlegen, ändern und löschen"). Dieses Vorgehen bietet sich beispielsweise an, wenn ein größerer Änderungslauf beschleunigt durchgeführt werden soll.
Der Datenbankverwalter sollte dafür sorgen, dass im Fehlerfall der Zustand des Anwender-Space zum Zeitpunkt der Logging-Unterbrechung, also unmittelbar vor Beginn des Änderungslaufs, wiederhergestellt werden kann. Zu Reparaturzwecken genügt es dann, den Änderungslauf zu wiederholen.
Der Datenbankverwalter erreicht dies wie folgt:
Falls es sich um die erste Logging-Unterbrechung seit Erstellung des bislang letzten SESAM-Sicherungsbestandes für den Anwender-Space handelt, stellt der Datenbankverwalter im Fehlerfall den Zustand des Anwender-Space zum Zeitpunkt der Logging-Unterbrechung wieder her mit der Utility-Anweisung RECOVER TO und Angabe des Zeitstempels der Logging-Unterbrechung.
Falls es sich nicht um die erste Logging-Unterbrechung seit Erstellung des bislang letzten SESAM-Sicherungsbestandes für den Anwender-Space handelt, muss der Datenbankverwalter unmittelbar vor Ausschalten des Logging einen SESAM-Sicherungsbestand des Anwender-Space mit der Utility-Anweisung COPY erstellen (siehe "SESAM-Sicherungsbestand erstellen mit COPY"). Auf diesen SESAM-Sicherungsbestand kann im Fehlerfall mit der Utility-Anweisung RECOVER TO zurückgesetzt werden.
Nach dem Änderungslauf sollte der Datenbankverwalter erneut einen SESAM-Sicherungsbestand des Anwender-Space mit der Utility-Anweisung COPY erstellen und mit COPY gleichzeitig das Logging für diesen Anwender-Space wieder einschalten. Dieser SESAM-Sicherungsbestand bildet dann den Ausgangspunkt für weitere Recovery-Maßnahmen auf diesem Anwender-Space.
Statt eines SESAM-Sicherungsbestandes kann auch eine Fremdkopie erzeugt und das Logging mit PREPARE-FOREIGN-COPY eingeschaltet werden, siehe "Voraussetzungen für eine Fremdkopie" und das Handbuch „ Datenbankbetrieb“.
Unterbrechen des Logging durch SESAM/SQL bei einigen Utility-Anweisungen
Automatisch unterbricht SESAM/SQL das Logging für die betroffenen Anwender-Spaces bei Ausführung der Utility-Anweisungen LOAD OFFLINE, IMPORT TABLE, RECOVER INDEX, RECOVER ADJUST, REORG ... NEW ROW_IDS sowie bei MIGRATE, wenn es sich nicht um einen MIGRATE CALL DML ONLY TABLE handelt. Unmittelbar vor Ausführung dieser Utility-Anweisungen sollte der Datenbankverwalter daher SESAM-Sicherungsbestände der betroffenen Anwender-Spaces erstellen. Tritt während der Ausführung von LOAD OFFLINE, IMPORT TABLE, MIGRATE, RECOVER INDEX, RECOVER ADJUST bzw. REORG ... NEW ROW_IDS ein Fehler auf, kann so auf den Stand unmittelbar vor Ausführung der betreffenden Utility-Anweisung zurückgesetzt und die Anweisung wiederholt werden. Bei einem RECOVER nach einer fehlerhaften Ausführung von IMPORT TABLE wird die Tabelle unter Umständen angelegt. Sie muss in diesem Fall mit DROP TABLE gelöscht werden, bevor IMPORT TABLE wiederholt werden kann. Bei einer fehlerhaften Ausführung von MIGRATE ist zu beachten, dass der Datenbankverwalter eine vom fehlerhaften MIGRATE bereits erzeugte Tabelle vor einer erneuten Ausführung von MIGRATE manuell mit der SQL-Anweisung DROP TABLE löschen muss.
Unmittelbar nach Ausführung von LOAD OFFLINE, IMPORT TABLE, MIGRATE, RECOVER INDEX, RECOVER ADJUST und REORG ... NEW ROW_IDS muss der Datenbankverwalter erneut SESAM-Sicherungsbestände der betroffenen Anwender-Spaces erstellen, die als neuer Ausgangspunkt für das weitere Logging dienen. Andernfalls befinden sich diese Anwender-Spaces im Zustand „copy pending“ (siehe "Space-Zustände nach der Ausführung von Utility-Anweisungen"). Sie bleiben für Anweisungen zum Ändern von Daten solange gesperrt, bis der Datenbankverwalter entsprechende SESAM-Sicherungsbestände erstellt hat.
Speichergeräte für das Logging festlegen
Die Rekonstruktion des Catalog-Space bzw. eines Anwender-Space nach Plattenfehler ist nur möglich, wenn die SESAM-Sicherungsbestände, die CAT-REC-Datei sowie die CAT-LOG- und DA-LOG-Dateien auf anderen Speichergeräten liegen als der Catalog-Space und die Anwender-Spaces.
Beim Anlegen des Catalog-Space mit der Utility-Anweisung CREATE CATALOG definiert der Datenbankverwalter die Storage Group und damit das Speichermedium, auf dem SESAM/SQL die CAT-REC-Datei und die CAT-LOG-Dateien anlegt (siehe Abschnitt „CatalogSpace der Datenbank anlegen“). Nach dem Erstellen des Catalog-Space kann der Datenbankverwalter mit der SQL-Anweisung CREATE STOGROUP weitere Storage Groups definieren (siehe "Storage Groups definieren, ändern und löschen").
Die Speichermedien für die DA-LOG-Dateien sowie eventuell benötigte weitere Speichermedien für die CAT-LOG-Dateien ordnet der Datenbankverwalter über die Medientabelle zu. CAT-LOG- und DA-LOG-Dateien können nur auf Platte angelegt werden, wobei eine Platte durch die betreffende Storage Group identifiziert wird.