SESAM/SQL benutzt Sperrmechanismen für Transaktionen, um die Synchronisation von Utility-Anweisungen zu gewährleisten:
Die Utility-Anweisung wartet das Ende aller offenen Transaktionen ab, die schon Sperren auf den betroffenen Spaces haben (siehe "Ausführung von Utility-Anweisungen durch SESAM/SQL").
Während der Ausführung der Utility-Anweisung warten alle folgenden Zugriffe, wenn sie auf die betroffenen Spaces zugreifen wollen, bis die interne Transaktion der UtilityAnweisung beendet ist.
CALL-DML-Open werden geschlossen und gespeicherte SQL-Cursor werden entwertet, wenn die betroffene Tabelle von dem Utility geändert worden ist. Anschließende CALL-DML-Zugriffe erhalten den Status 9U, Zugriffe auf den SQL-Cursor den SQLSTATE 24SA5. Die entsprechenden Utility-Anweisungen sind:
REORG [CATALOG_]SPACE
CHECK CONSTRAINTS
LOAD OFFLINE
IMPORT TABLE
RECOVER CATALOG / CATALOG_SPACE
RECOVER SPACE
REFRESH REPLICATION
REFRESH SPACE
ALTER CATALOG
ALTER PARTITIONING FOR TABLE
ALTER DATA FOR TABLE
Folgende Tabelle zeigt, welche Spaces von der Ausführung der einzelnen Utility-Anweisungen betroffen sind.
Utility-Anweisung | von der Utility-Anweisung betroffene Spaces |
ALTER CATALOG | Catalog-Space |
CREATE CATALOG | Catalog-Space |
COPY | angegebene Sicherungseinheit |
CREATE REPLICATION | angegebene Einheit (Replikat) |
REFRESH REPLICATION | angegebene Einheit (Replikat oder Teilreplikat) |
REFRESH SPACE | angegebene Spaces |
RECOVER [USING/TO] | angegebene Einheit für das Recovery |
RECOVER | angegebene Einheit für das Recovery |
RECOVER INDEX | alle Anwender-Spaces, auf denen die angegebenen Indizes liegen |
REORG [CATALOG_]SPACE | Catalog-Space, angegebener Anwender-Space |
REORG ONLINE TABLE | Anwenderspace, auf dem die Basistabelle oder Partition der |
LOAD | Anwender-Space, auf dem die Basistabelle liegt, in die mit LOAD |
UNLOAD | Anwender-Space, auf dem die Basistabelle liegt, aus der mit UN- |
EXPORT TABLE | Anwender-Space, auf dem die Basistabelle liegt, die in eine |
IMPORT TABLE | Anwender-Space, in den mit Hilfe einer Export-Datei eine |
ALTER DATA FOR TABLE | Anwender-Space, auf dem die Basistabelle liegt. |
ALTER PARTITIONING | Anwender-Spaces, auf denen die betroffenen Partitionen der |
CHECK FORMAL | Anwender-Space der formal geprüft wird bzw. auf dem die zu |
ALTER MEDIA DESCRIPTION | Medientabelle auf dem Catalog-Space |
MODIFY | Catalog-Tabellen RECOVERY_UNITS und DA_LOGS auf dem |
MIGRATE | Catalog-Space sowie Anwender-Space, auf dem die umzustellende |
Tabelle 40: Von Utility-Anweisungen betroffene Spaces
Je nach Utility-Anweisung ist während der Ausführung der Anweisung ändernder oder lesender Zugriff anderer Benutzer auf einen von der Utility-Anweisung betroffenen Space möglich, eingeschränkt möglich oder überhaupt nicht möglich.
Paralleler Zugriff ist nicht erlaubt bei:
ALTER CATALOG
ALTER PARTITIONING FOR TABLE (nur auf die betroffenen Spaces)
ALTER DATA FOR TABLE
CREATE CATALOG
CREATE REPLICATION
MIGRATE
RECOVER
RECOVER INDEX
REFRESH REPLICATION
REFRESH SPACE
REORG [CATALOG_]SPACE
(während des Kopierens oder des Umbenennens der Arbeitsdatei in den AnwenderSpace und während der Reorganisation des Catalog-Space)LOAD OFFLINE (falls die Klausel GENERATE INDEX angegeben ist)
IMPORT TABLE
Parallel lesender Zugriff auf die Tabellen und Indizes des Space, die nicht von der Utility-Anweisung betroffen sind, ist erlaubt bei:
CHECK CONSTRAINTS
LOAD OFFLINE (falls die Klausel GENERATE INDEX nicht angegeben ist)
Parallel lesender Zugriff auf den gesamten von der Utility-Anweisung betroffenen Space ist erlaubt bei:
CHECK FORMAL
COPY
UNLOAD
EXPORT TABLE (wenn Anwenderdaten exportiert werden)
REORG [CATALOG_]SPACE (für die Zeit des Aufbaus der Arbeitsdatei)
Parallel lesender und ändernder Zugriff auf den gesamten von der Utility-Anweisung betroffenen Space ist erlaubt bei:
COPY ONLINE
EXPORT TABLE (wenn keine Anwenderdaten exportiert werden)
LOAD ONLINE
MODIFY
ALTER/CREATE/DROP MEDIA DESCRIPTION
REORG ONLINE TABLE
UNLOAD ONLINE
Nicht erlaubte Zugriffsversuche weist SESAM/SQL mit Statuscode ab und behandelt Spaces, Tabellen und Indizes, auf die kein Zugriff erlaubt ist, wie nicht verfügbare Spaces, Tabellen und Indizes.
Parallele RECOVER-Anweisungen
Eine Verkürzung von RECOVERY-Läufen kann erreicht werden, wenn der Anwender mehrere, parallel ablaufende RECOVER-Anweisungen gibt.
Parallel ablaufende RECOVER-Anweisungen dürfen sein:
RECOVER eines einzelnen Space:
RECOVER SPACE
spaceUSING
rec_unitRECOVER einer Space-Liste:
RECOVER SPACE
space,
space[,...] USING
rec_unitRECOVER eines Space-Set:
RECOVER SPACESET AT CATALOG
catalogUSING
zeitstempel
Randbedingungen für die parallele Verarbeitung
Die Space-Mengen der RECOVER-Anweisungen müssen disjunkt sein, d.h. ein Space darf nur von einer der parallelen RECOVER-Anweisungen betroffen sein.
Für parallele RECOVER-Anweisungen dürfen die Parameter TO, RESTART und ADJUST nicht angegeben werden. Damit sind nur solche RECOVER-Anweisungen zulässig, bei denen Loggingdateien nachzufahren sind.
Es müssen genügend Service-Tasks gestartet sein
(ein Service-Task je paralleler RECOVER-Anweisung).
Ist eine dieser Randbedingungen nicht erfüllt, so werden die betroffenen RECOVER-Anweisungen durch die Sperrmechanismen serialisiert, siehe "Ausführung von Utility-Anweisungen durch SESAM/SQL".