Anfang des InhaltsbereichsHintergrunddokumentationFunktionsweise des SAP-Sperrkonzepts Dokument im Navigationsbaum lokalisieren

In diesem Kapitel wird erklärt, wie der SAP-Sperrmechanismus implementiert ist. Es bietet Hintergrundwissen, das dazu dient, die Sperrverwaltung besser zu verstehen und anwenden zu können. Die konkreten Möglichkeiten zum Umgang mit SAP-Sperren ist unter Sperreinträge verwalten beschrieben.

SAP Sperrlogik

Der Programmierer einer SAP-Transaktion muss, wenn die Transaktion Datenbankobjekte verändern will, diese vorher gegen konkurrierenden Zugriff sperren und anschließend wieder freigeben.

Hierzu muss er im Data Dictionary ein Sperrobjekt definieren (siehe StrukturlinkSperrobjekte in der Data Dictionary Dokumentation) und anschließend aktivieren. Das Aktivieren bewirkt, dass das System zwei Funktionsbausteine generiert: einen für das Sperren des Objekts, einen für das Freigeben. Dies ist im Detail unter StrukturlinkSperrmechanismus in der ABAP Dictionary Dokumentation beschrieben.

Sperrserver

In einem verteilten SAP-System gibt es einen einzigen Sperrserver (auch Enqueue-Server genannt), der die Sperrtabelle verwaltet. Dieser läuft auf der Zentralinstanz.

Soll in einer Applikation, die auf einer anderen als der Zentralinstanz (u. U. auf einem anderen Rechner) läuft, eine Sperre abgesetzt werden, so geht die Sperranforderung über den lokalen Dispatcher und den Message-Server zu dem Dispatcher der Zentralinstanz, der die Anfrage dann an den Enqueue-Workprozess weitergibt. Dieser schaut in der Sperrtabelle nach, ob die Sperranforderung mit einer schon gesetzten Sperre kollidiert (siehe dazu Kollisionen von Sperren). In diesem Fall wird die Anforderung zurückgewiesen, ansonsten wird die Sperre gesetzt, es wird der entsprechende Eintrag in der Sperrtabelle vorgenommen.

Hinweis

Die Workprozesse auf der Zentralinstanz haben direkt Zugriff auf die Sperrtabellenfunktionalität. Sie müssen ihre Sperranforderungen nicht via Dispatcher und Messageserver versenden.

Die folgende Grafik zeigt den Kommunikationsweg in einem verteilten SAP-System mit Zentralinstanz und weiteren Instanzen.

Enqueue-Kommunikation

Diese Grafik wird im zugehörigen Text erklärt

Sperren und SAP-Verbuchung

Die Sperre wird im Laufe der Transaktion an die SAP-StrukturlinkVerbuchung übergeben. Wie das genau funktioniert, ist unter Das Eigentümerkonzept und StrukturlinkFunktionsbausteine für Sperranforderungen beschrieben. Sperren, die an die Verbuchung übergeben wurden, werden auch zusätzlich zur Sperrtabelle in einer Backup-Datei gespeichert, so dass sie nicht verlorengehen, wenn der Enqueue-Server ausfällt. In der Sperrverwaltung ist dann das Backup-Flag gesetzt.

SAP-Sperren und Datenbanksperren

Die folgende Grafik zeigt den Zusammenhang zwischen SAP-Sperren und Datenbanksperren. Ziel ist natürlich, die Zeitspanne einer Datenbanksperre zu minimieren. Des weiteren kann eine SAP-Sperre über mehrere Datenbank-LUWs hinweg bestehen, eine Datenbanksperre hingegen nicht. Der Unterschied zwischen SAP-LUW und Datenbank-LUW ist unter StrukturlinkFunktionsweise der Verbuchung beschrieben.

Diese Grafik wird im zugehörigen Text erklärt

Die oberste (unterbrochene) blaue Linie deutet eine SAP Dialogtransaktion an, die aus drei Dynpros (Eingabefenster) besteht; hierbei entspricht jedes Dynpro einer Datenbank-LUW (vgl. StrukturlinkFunktionsweise der Verbuchung). Nach einer Eingabe des Benutzers endet jeweils die Datenbank-LUW (hellblaue Linie).

Nach der Benutzereingabe übernimmt wieder ein Dialogworkprozess die Bearbeitung. Nach der 2. Benutzereingabe wird die Bearbeitung abgeschlossen und der Dialogteil der SAP-LUW beendet.

Hinweis

Hierbei muss es nicht ein und derselbe Dialogworkprozess sein, der die Transaktion abarbeitet. Bei jedem Dynpro wird vom Dispatcher ein freier Workprozess gesucht, der die Bearbeitung durchführt.

In diesem Beispiel wurde im ersten Bild der Transaktion eine SAP-Sperre angefordert - diese besteht solange (obere dunkelblaue Linie), bis die Anwendungsdaten in der Datenbank geändert sind, d.h. in den meisten Fällen, bis die SAP Verbuchung abgeschlossen ist. Dies ist keine Performance-Einbuße, da es sich nicht um eine Datenbanksperre handelt.

Die Datenbanksperre (durch die untere dunkelblaue Linie dargestellt) besteht nur während der Datenbank-LUW, in der die im SAP-System vorgenommenen Änderungen tatsächlich verbucht werden (siehe StrukturlinkFunktionsweise der Verbuchung).

 

Details zur Funktionsweise des Sperrkonzepts finden Sie unter

Das Eigentümerkonzept

Die Sperrtabelle

Kollisionen von Sperren

Kumulation von Sperren

Fragen und Antworten zum Thema Sperren

Ende des Inhaltsbereichs