15.09.2014 Aufrufe

2 Analyse von Hardware, Datenbank und ABAP-Applikationsserver

2 Analyse von Hardware, Datenbank und ABAP-Applikationsserver

2 Analyse von Hardware, Datenbank und ABAP-Applikationsserver

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Mit der <strong>Analyse</strong> der <strong>Hardware</strong>ressourcen, der <strong>Datenbank</strong><br />

sowie der Workprozesse <strong>und</strong> Speicherbereiche des SAP NetWeaver<br />

AS <strong>ABAP</strong> steigen wir – bottom-up – in die Performanceanalyse<br />

ein. Verschaffen Sie sich einen ersten Überblick über die<br />

aktuelle Situation im System!<br />

2 <strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong><br />

<strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

Dieses Kapitel erläutert die Gr<strong>und</strong>lagen <strong>von</strong> Performanceanalysen<br />

der <strong>Hardware</strong>, der <strong>Datenbank</strong>, der SAP-Speicherkonfiguration <strong>und</strong><br />

der SAP-Workprozesse des SAP NetWeaver Application Servers<br />

<strong>ABAP</strong>. Am Ende eines jeden Abschnitts finden Sie Flussdiagramme,<br />

die die wichtigsten <strong>Analyse</strong>pfade zusammenfassen <strong>und</strong> die Abhängigkeiten<br />

zwischen den <strong>Analyse</strong>n verdeutlichen. Im letzten Abschnitt<br />

gehen wir auf den zentralen Überwachungsmonitor ein, der Performanceindikatoren<br />

aus allen Bereichen integriert.<br />

Zu diesen <strong>Analyse</strong>n erhalten Sie sofort Optimierungsvorschläge, sofern<br />

dies ohne umfangreichere Erklärungen möglich ist. Um auch einem<br />

in der Performanceanalyse unerfahrenen Berater oder Administrator<br />

einen schnellen Einstieg zu ermöglichen, verzichten wir<br />

bewusst auf Hintergr<strong>und</strong>informationen. So wird z. B. beschrieben,<br />

wie Sie das SAP Extended Memory überwachen <strong>und</strong> einstellen, ohne<br />

den Begriff SAP Extended Memory zu erklären. Umfassendere Informationen<br />

finden Sie anschließend in den Kapiteln 5 bis 15. Dieser<br />

Aufbau trägt unserer Erfahrung Rechnung, dass es möglich ist, viele<br />

Performanceprobleme im Bereich <strong>von</strong> Betriebssystem, <strong>Datenbank</strong><br />

<strong>und</strong> SAP-Basis anhand einfacher Handlungsanweisungen zu lösen,<br />

ohne sich vorher eingehend mit den Details der Architektur zu beschäftigen.<br />

75


2<br />

<strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong> <strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

Wann sollten Sie dieses Kapitel lesen?<br />

Dieses Kapitel sollten Sie lesen, wenn Sie die Performance des SAP-<br />

Systems, der <strong>Datenbank</strong> oder des Betriebssystems vom SAP-System<br />

aus technisch überwachen <strong>und</strong> optimieren wollen.<br />

2.1 Begriffsklärungen<br />

Die Begriffe Rechner, Server, <strong>Applikationsserver</strong>, SAP-Instanz, <strong>Datenbank</strong>,<br />

<strong>Datenbank</strong>server <strong>und</strong> <strong>Datenbank</strong>instanz werden in diesem Buch<br />

wie folgt verwendet:<br />

Rechner<br />

SAP-Applikationsinstanz<br />

<strong>Datenbank</strong><br />

Ein Rechner (oder Computer) ist eine physische Maschine mit CPU,<br />

Hauptspeicher, IP-Adresse etc.<br />

Eine SAP-Applikationsinstanz, auch kurz als SAP-Instanz bezeichnet,<br />

ist eine administrative Einheit: Sie besteht aus einem Satz <strong>von</strong> SAP-<br />

Workprozessen, die <strong>von</strong> einem Dispatcher verwaltet werden, sowie<br />

aus einem Satz <strong>von</strong> SAP-Puffern im Shared Memory des Rechners, auf<br />

den die Workprozesse zugreifen. Eine SAP-Applikationsinstanz kann<br />

eine <strong>ABAP</strong>-Applikationsinstanz (SAP NetWeaver Application Server<br />

<strong>ABAP</strong>, kurz AS <strong>ABAP</strong> oder eine Java-Applikationsinstanz (SAP Net-<br />

Weaver Application Server Java, kurz AS Java) sein. Es kann mehrere<br />

SAP-Instanzen auf einem Rechner geben. In diesem Fall existieren<br />

mehrere Dispatcher <strong>und</strong> mehrere Puffersätze. Ein <strong>Applikationsserver</strong><br />

ist ein Rechner, auf dem mindestens eine SAP-Instanz läuft.<br />

Jedes SAP-System besitzt genau eine <strong>Datenbank</strong>. Als <strong>Datenbank</strong><br />

bezeichnen wir die Datenbasis, die z. B. in Form <strong>von</strong> Dateien vorliegt.<br />

Die <strong>Datenbank</strong> ist der passive Teil des <strong>Datenbank</strong>systems.<br />

Der aktive Teil des <strong>Datenbank</strong>systems ist die <strong>Datenbank</strong>instanz, eine<br />

administrative Einheit, die den Zugriff auf eine <strong>Datenbank</strong> erlaubt.<br />

Eine <strong>Datenbank</strong>instanz besteht aus <strong>Datenbank</strong>prozessen <strong>und</strong> einem<br />

Satz <strong>von</strong> <strong>Datenbank</strong>puffern im Shared Memory eines Rechners. Ein<br />

<strong>Datenbank</strong>server ist ein Rechner, auf dem mindestens eine <strong>Datenbank</strong>instanz<br />

läuft. Ein Rechner kann zugleich <strong>Datenbank</strong>- <strong>und</strong> <strong>Applikationsserver</strong><br />

sein, wenn eine <strong>Datenbank</strong>instanz <strong>und</strong> eine SAP-Instanz<br />

darauf laufen.<br />

In der Regel operiert im SAP-Umfeld auf einer <strong>Datenbank</strong> nur eine<br />

<strong>Datenbank</strong>instanz. Beispiele für <strong>Datenbank</strong>systeme, bei denen auf<br />

76


<strong>Hardware</strong>analyse 2.2<br />

eine <strong>Datenbank</strong> mehrere <strong>Datenbank</strong>instanzen zugreifen, sind DB2<br />

<strong>und</strong> Oracle Parallel Server. Die Besonderheiten solcher parallelen<br />

<strong>Datenbank</strong>systeme werden in diesem Buch nicht behandelt.<br />

Als SAP-Systeme bezeichnen wir Softwarekomponenten <strong>von</strong> SAP mit<br />

dem SAP NetWeaver AS als Gr<strong>und</strong>lage. Im Einzelnen sind dies SAP<br />

ERP, SAP NetWeaver BW, SAP APO, SAP SRM <strong>und</strong> SAP NetWeaver<br />

Portal.<br />

SAP-System<br />

Im Sinne dieser Terminologie kann also z. B. ein SAP ERP-System aus<br />

ein oder zwei Systemen bestehen, je nachdem, ob der Java- <strong>und</strong> der<br />

<strong>ABAP</strong>-Teil auf einem gemeinsamen System mit einer <strong>Datenbank</strong><br />

(»Double-Stack«) oder auf zwei Systemen mit getrennten <strong>Datenbank</strong>en<br />

betrieben werden – dieser Terminologie folgt im Übrigen auch<br />

der SAP Solution Manager.<br />

Der Begriff Server wird in der Dokumentation <strong>und</strong> der Literatur<br />

mehrdeutig verwendet. Er kann sowohl einen Rechner bezeichnen,<br />

z. B. im Begriff <strong>Datenbank</strong>server, als auch einen logischen Service, z. B.<br />

in den Begriffen Message-Server <strong>und</strong> ATP-Server. So verwenden wir<br />

auch <strong>ABAP</strong>-Server bzw. Java-Server als Kurzformen für den SAP Net-<br />

Weaver Application Server (AS) <strong>ABAP</strong> bzw. Java.<br />

Server<br />

2.2 <strong>Hardware</strong>analyse<br />

Das Werkzeug zur <strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>engpässen <strong>und</strong> Betriebssystemproblemen<br />

ist der Betriebssystemmonitor. Um diesen Monitor<br />

für den <strong>Applikationsserver</strong> zu starten, auf dem Sie zurzeit angemeldet<br />

sind, wählen Sie:<br />

Betriebssystemmonitor<br />

Werkzeuge Administration Monitor Performance <br />

Betriebssystem Lokal Betriebssystemmonitor<br />

Alternativ können Sie den Transaktionscode ST06 verwenden. Sie<br />

gelangen auf den Hauptbildschirm des Betriebssystemmonitors.<br />

Zu Basis-Version 7.10 wurde der Betriebssystemmonitor überarbeitet.<br />

Nach dieser Überarbeitung führen die drei Transaktionscodes<br />

OS06, OS07 <strong>und</strong> ST06 auf einen Monitor, mit dem sowohl der lokale<br />

als auch entfernte Rechner überwacht werden können. Bei Versionen<br />

vor 7.10 stehen die neuen Transaktionen unter den Transaktionscodes<br />

OS06N, OS07N <strong>und</strong> ST06N zur Verfügung, mit den Transaktions-<br />

Aufruf <strong>und</strong><br />

Verfügbarkeit<br />

77


2<br />

<strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong> <strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

codes OS06, OS07 <strong>und</strong> ST06 erreichen Sie nach wie vor die älteren<br />

Transaktionen. Alle Informationen, die wir in diesem Buch besprechen,<br />

stehen Ihnen auch in den alten Transaktionen zur Verfügung.<br />

Die Detailanalysen finden Sie über die Navigation mit der Schaltfläche<br />

Detail Analysis Menu.<br />

Der Betriebssystemmonitor lässt sich auch aus der Serverübersicht<br />

heraus aufrufen:<br />

Werkzeuge Administration Monitor Systemüberwachung <br />

Server (Transaktionscode SM51)<br />

Positionieren Sie anschließend den Cursor auf dem gewünschten<br />

<strong>Applikationsserver</strong>, <strong>und</strong> wählen Sie im Menü Springen Monitore <br />

OS-Monitor.<br />

Aufbau<br />

Der Bildschirm des Betriebssystemmonitors teilt sich in drei Bereiche<br />

(siehe Abbildung 2.1).<br />

Abbildung 2.1 Hauptbildschirm des Betriebssystemmonitors<br />

78


<strong>Hardware</strong>analyse 2.2<br />

Im linken oberen Fenster finden Sie die Auswahl der Rechner, die<br />

überwacht werden. Dort können Sie einen Rechner auswählen, den<br />

Sie analysieren wollen. Im linken unteren Fenster wählen Sie die<br />

<strong>Analyse</strong>daten aus. Die Daten zum ausgewählten Rechner <strong>und</strong> zur ausgewählten<br />

<strong>Analyse</strong> finden Sie im rechten Fenster.<br />

Standardmäßig finden Sie alle Rechner, auf denen SAP-<strong>ABAP</strong>-Instanzen<br />

installiert wurden, in der Auswahlliste. Gr<strong>und</strong>sätzlich lässt sich<br />

aber jeder Rechner in den Remote-Betriebssystemmonitor einbinden,<br />

sofern dort ein Monitoring-Agent installiert ist. Dringend empfohlen<br />

wird dies für Rechner, auf denen eine Stand-alone-<strong>Datenbank</strong>,<br />

eine SAP-Java-Instanz oder ein TREX läuft.<br />

Beachten Sie, dass Sie diesen Monitor auch dann einrichten sollten,<br />

wenn Sie mit einem Werkzeug eines anderen Herstellers die Auslastung<br />

Ihrer Rechner überwachen. Sollten Sie Support <strong>von</strong> SAP benötigen,<br />

kann ein Experte <strong>von</strong> SAP nur über den SAP-eigenen Monitor<br />

die Rechner analysieren.<br />

SAP-Support<br />

2.2.1 <strong>Analyse</strong> eines <strong>Hardware</strong>engpasses<br />

(CPU <strong>und</strong> Hauptspeicher)<br />

Eine Übersicht über die wichtigsten Betriebssystem- <strong>und</strong> <strong>Hardware</strong>daten<br />

finden Sie unter dem Punkt Snapshot in der <strong>Analyse</strong>auswahl<br />

des Betriebssystemmonitors (siehe Abbildung 2.1). Alle Daten des<br />

Betriebssystemmonitors werden vom Hilfsprogramm saposcol im<br />

Zehn-Sek<strong>und</strong>en-Rhythmus aufgefrischt. Ein Auffrischen der Daten<br />

mit der entsprechenden Drucktaste ergibt also nur dann neue Daten,<br />

wenn zehn Sek<strong>und</strong>en verstrichen sind.<br />

Im Abschnitt CPU finden Sie die Felder Benutzerauslastung, Systemauslastung<br />

<strong>und</strong> Leerlauf. Diese Werte zeigen an, wie viel Prozent der<br />

CPU-Kapazität augenblicklich <strong>von</strong> Benutzerprozessen (d. h. vom SAP-<br />

System, der <strong>Datenbank</strong> <strong>und</strong> weiteren Prozessen) <strong>und</strong> vom Betriebssystem<br />

selbst genutzt werden <strong>und</strong> wie viel Prozent derzeit frei sind. Das<br />

Feld Anzahl CPUs gibt die Anzahl der CPU-Fäden (»Threads«) an.<br />

Mittlere Prozesswartezeit ist die Anzahl der Prozesse, die auf einen<br />

freien Prozessor warten. Dieser Wert wird im Mittel über eine Minute,<br />

über fünf Minuten <strong>und</strong> über 15 Minuten angegeben. Die weiteren<br />

Werte im Abschnitt CPU sind für die Performanceanalyse weniger<br />

wichtig. Tabelle 2.1 gibt Ihnen einen Überblick über die Felder des<br />

Betriebssystemmonitors.<br />

CPU-Auslastung<br />

79


2<br />

<strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong> <strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

Feld<br />

Benutzerauslastung<br />

Systemauslastung<br />

Leerlauf<br />

Anzahl der CPUs<br />

Mittlere Prozesswartezeit<br />

Physischer Speicher<br />

Bedeutung<br />

CPU-Auslastung durch Benutzerprozesse<br />

(SAP-System, <strong>Datenbank</strong> etc.)<br />

CPU-Auslastung durch das Betriebssystem<br />

Freie CPU-Kapazität. Dieser Wert sollte mindestens<br />

20 % betragen, optimalerweise aber 35 %.<br />

Anzahl der CPU-Threads<br />

Anzahl der Prozesse, die auf die CPUs warten,<br />

gemittelt über eine, fünf bzw. 15 Minuten<br />

physisch vorhandener Hauptspeicher (RAM)<br />

in KB<br />

Tabelle 2.1 Felder des Betriebssystemmonitors<br />

Prozessoren, Kerne (Cores) <strong>und</strong> Fäden (Threads)<br />

Als Beschreibung der Rechnerausstattung findet man z. B. folgende Angaben:<br />

»zwei Prozessoren, acht Cores, 16 Threads, Prozessor des Herstellers X mit<br />

2.93 GHz Taktfrequenz«. Was bedeuten die Angaben über die Anzahl der<br />

Prozessoren, Kerne (Cores) <strong>und</strong> Fäden (Threads) für das SAP-System?<br />

Der Begriff Prozessor bezeichnet bekanntlich die zentrale Verarbeitungseinheit<br />

(Central Processing Unit, CPU) eines Rechners, die in der Lage ist, Programme<br />

auszuführen. Dabei unterscheidet man zwischen Einkernprozessoren <strong>und</strong><br />

Mehrkernprozessoren. Mehrkernprozessoren verfügen über mehrere vollständig<br />

ausgebaute Verarbeitungseinheiten (Kerne) auf einem Chip. Die einzelnen<br />

Kerne teilen sich lediglich den Bus, sind also als vollwertige CPUs anzusehen.<br />

Mehrfädige Prozessorkerne (Multi-Threaded-CPUs) verfügen über eine CPU,<br />

melden sich aber als mehrere CPUs am Betriebssystem an. Damit bilden sich<br />

für diese Kerne mehrere Warteschlangen, aus, zwischen denen der Kern hin<strong>und</strong><br />

herschaltet. Um diesen Wechsel zu optimieren, besitzt jeder Thread einen<br />

eigenen Registersatz, einschließlich Stack Pointer <strong>und</strong> Program Counter, damit<br />

kann ohne zusätzliche Prozessorzyklen zwischen den Threads geschaltet werden.<br />

Diese hardwareseitigen Threads sollten Sie jedoch nicht mit den Threads<br />

verwechseln, die die Anwendungsprozesse erzeugen (User- oder Software-<br />

Threads). Innerhalb eines Prozesses der <strong>Datenbank</strong>, des <strong>ABAP</strong>-, Java- oder<br />

TREX-Servers können mehrere (Software-)Threads erzeugt werden, die vom<br />

Betriebssystem in Zeitscheiben ausgeführt werden. Den Wechsel zwischen<br />

den (Software-)Threads bezeichnet man als Kontextwechsel. Unter diesem<br />

Gesichtspunkt kann man also sagen, dass zusätzliche (<strong>Hardware</strong>-)Threads<br />

Kontextwechsel zwischen (Software-)Threads begünstigen <strong>und</strong> damit den vorhandenen<br />

Kern besser auslasten helfen, allerdings <strong>von</strong> der Leistungssteigerung<br />

nicht ganz an einen zusätzlichen Kern heranreichen.<br />

80


<strong>Hardware</strong>analyse 2.2<br />

Der Abschnitt Memory enthält Informationen über den physisch vorhandenen<br />

Hauptspeicher (Feld Physischer Speicher) <strong>und</strong> Werte über<br />

das Betriebssystem-Paging. Unter Swap finden Sie den aktuell allokierten<br />

Auslagerungsspeicher (Swap-Space). Der Auslagerungsspeicher<br />

muss größer als die Summe des konfigurierten Speicherbereichs sein.<br />

Hauptspeicherauslastung<br />

Programmabbrüche durch Speicherknappheit<br />

Ist die Summe aus physischem Speicher <strong>und</strong> Auslagerungsspeicher kleiner<br />

als der vom SAP-System, <strong>von</strong> der <strong>Datenbank</strong> <strong>und</strong> anderen Programmen<br />

benötigte Speicher, kann es zu Speicherverwaltungsfehlern (d. h. zu Programmabbrüchen<br />

innerhalb des SAP-Systems), im schlimmsten Fall sogar<br />

zum Abbruch des Betriebssystems, kommen. Sie sollten also in jedem Fall<br />

den Auslagerungsspeicher ausreichend dimensionieren.<br />

Um einen Überblick über die CPU-Auslastung der letzten 24 St<strong>und</strong>en<br />

zu erhalten, wählen Sie im Betriebssystemmonitor die <strong>Analyse</strong><br />

Vorige St<strong>und</strong>en CPU. Sie gelangen auf den Bildschirm Vorige<br />

St<strong>und</strong>en CPU. Die Bedeutung der Felder ist dieselbe wie im Hauptbildschirm,<br />

nur sind die Werte über eine St<strong>und</strong>e gemittelt. Einen<br />

ähnlichen Überblick gibt es auch für die Hauptspeicherbelegung<br />

(Vorige St<strong>und</strong>en Speicher) <strong>und</strong> für den Auslagerungsspeicher etc.<br />

Historien: CPU <strong>und</strong><br />

Hauptspeicher<br />

Wann liegt ein CPU- bzw. ein Hauptspeicherengpass vor?<br />

Im St<strong>und</strong>enmittel sollte der freie CPU-Anteil Leerlauf mindestens<br />

20 % betragen, um auf kurze Lastspitzen reagieren zu können.<br />

Erwünscht sind sogar eher 35 % freie CPU-Kapazität. Für die Paging-<br />

Rate gelten folgende Richtwerte:<br />

Richtwerte<br />

<br />

<br />

Bei Rechnern, die eine <strong>Datenbank</strong>, eine Java-Instanz oder einen<br />

TREX beherbergen, sollten nur sehr geringe Paging-Raten zu beobachten<br />

sein, d. h., sie sollten so dimensioniert sein, dass der verfügbare<br />

Hauptspeicher den konfigurierten Speicherbereichen entspricht.<br />

Bei Rechnern, die ausschließlich <strong>ABAP</strong>-Instanzen tragen, können<br />

mäßige Paging-Raten <strong>von</strong> bis zu 20 % des physischen Hauptspeichers<br />

pro St<strong>und</strong>e toleriert werden.<br />

Dabei ist für Betriebssysteme, die kontinuierlich Speicher auslagern<br />

(z. B. Microsoft Windows), die Paged-in-Rate entscheidend, für<br />

andere Betriebssysteme hingegen, die erst bei Bedarf auslagern (die<br />

81


2<br />

<strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong> <strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

meisten UNIX-Derivate), die Paged-out-Rate. Umgekehrt bedeutet das<br />

Überschreiten dieser Richtwerte nicht automatisch, dass ein <strong>Hardware</strong>engpass<br />

vorliegt. Vielmehr sollten Sie in diesem Fall mithilfe des<br />

Workload-Monitors prüfen, ob sich die CPU-Auslastung bzw. die<br />

Paging-Rate negativ auf die Antwortzeiten auswirkt. Entsprechende<br />

<strong>Analyse</strong>n finden Sie in Abschnitt 3.4.1, »Allgemeines Performanceproblem<br />

analysieren«.<br />

Hauptspeicherengpass<br />

Wenn Sie in der Voranalyse hohe Paging-Raten auf mehreren Rechnern<br />

beobachten, sollten Sie den <strong>von</strong> den SAP-Instanzen <strong>und</strong> der <strong>Datenbank</strong><br />

allokierten Hauptspeicher berechnen (siehe die Abschnitte 2.4.3,<br />

»Anzeige des allokierten Speichers«, <strong>und</strong> 2.3.2, »<strong>Analyse</strong> der <strong>Datenbank</strong>puffer«).<br />

Vergleichen Sie diesen mit dem physisch vorhandenen<br />

Hauptspeicher. Erfahrungen zeigen, dass es in der Regel unkritisch ist,<br />

50 % mehr Speicher virtuell zu allokieren, als physisch vorhanden sind.<br />

Bei den Betriebssystemen Microsoft Windows <strong>und</strong> Oracle Solaris<br />

kann die Auswertung der Paging-Rate auf dem <strong>Datenbank</strong>server zu<br />

Fehlinterpretationen führen, da dort Schreib-/Lese-Operationen (I/O)<br />

unter gewissen Umständen ebenfalls als Paging gezählt werden. Vergleichen<br />

Sie dazu die SAP-Hinweise 124199 (Solaris) <strong>und</strong> 689818<br />

(Windows).<br />

Ursache <strong>von</strong> <strong>Hardware</strong>engpässen<br />

Ist nach den oben genannten Kriterien ein <strong>Hardware</strong>engpass auf<br />

einem oder mehreren Rechnern des SAP-Systems erkennbar, sind folgende<br />

Ursachen möglich:<br />

<br />

Falsche Lastverteilung<br />

Wenn Sie in einem verteilten System mit mehreren Rechnern auf<br />

mindestens einem Rechner einen <strong>Hardware</strong>engpass feststellen,<br />

während andere Rechner über ungenutzte Ressourcen verfügen,<br />

liegt vermutlich eine falsche Lastverteilung vor. In diesem Fall sollten<br />

Sie die SAP-Workprozesse <strong>und</strong> die Benutzer neu verteilen.<br />

Überaus wichtig ist es, dass der <strong>Datenbank</strong>server über genügend<br />

Ressourcen verfügt. Ein CPU- oder Hauptspeicherengpass auf dem<br />

<strong>Datenbank</strong>server führt dazu, dass die benötigten Daten aus der<br />

<strong>Datenbank</strong> nicht zügig bereitgestellt werden können, was sich wiederum<br />

negativ auf die Antwortzeiten innerhalb des gesamten Systems<br />

auswirkt.<br />

82


<strong>Hardware</strong>analyse 2.2<br />

<br />

CPU-Auslastung einzelner Programme<br />

Wählen Sie im Betriebssystemmonitor (Transaktionscode ST06)<br />

die <strong>Analyse</strong> Snapshot Top CPU processes. Sie gelangen in die<br />

Übersicht der Betriebssystemprozesse. Diese gibt Ihnen einen<br />

Überblick über die derzeit aktiven Prozesse <strong>und</strong> deren Ressourcenauslastung.<br />

Abbildung 2.2 zeigt eine solche Übersicht für ein System, auf dem<br />

eine <strong>ABAP</strong>-Instanz <strong>und</strong> eine DB2-<strong>Datenbank</strong> installiert sind. Folgende<br />

Prozesse können Sie identifizieren:<br />

Übersicht der<br />

Betriebssystemprozesse<br />

<br />

<br />

dw_: SAP-Workprozess der SAP-<strong>ABAP</strong>-Instanz auf<br />

einem UNIX-Betriebssystem. Auf Windows-Betriebssystemen lautet<br />

die Bezeichnung disp+work.<br />

db2sysc: <strong>Datenbank</strong>prozess der DB2-<strong>Datenbank</strong>. Die Prozesse<br />

anderer <strong>Datenbank</strong>en führen in der Regel ihre Markenbezeichnung<br />

(z. B. Oracle) im Prozess- oder Benutzernamen.<br />

Abbildung 2.2 <strong>Analyse</strong> der Top-CPU-Prozesse im Betriebssystemmonitor<br />

83


2<br />

<strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong> <strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

Betriebssystemprozesse, die Sie anhand der folgenden Namensbestandteile<br />

erkennen können, gehören außerdem zu SAP-Instanzen:<br />

<br />

<br />

<br />

<br />

jstart ...: Serverprozess der SAP-Java-Instanz<br />

TREX ...: TREX-Prozess, der Servertyp kann dem Prozessnamen<br />

entnommen werden, z. B. Index-Server, Präprozessor etc.<br />

icman ...: Prozess des Internet Communication Managers (ICM)<br />

saposcol ...: Hilfsprogramm, das u. a. die Daten für den Betriebssystemmonitor<br />

sammelt<br />

<strong>Analyse</strong> der CPU-<br />

Auslastung<br />

Beobachten Sie durch Auffrischen des Monitors, ob einzelne Prozesse<br />

über längere Zeit hinweg die CPU stark belasten (Spalte CPU (%)).<br />

Handelt es sich bei den Prozessen, die die CPU stark belasten, um Prozesse<br />

der SAP-Basis oder der <strong>Datenbank</strong>, finden Sie in den im Folgenden<br />

genannten Monitoren weitere Informationen über die Tätigkeiten<br />

der Prozesse. Starten Sie den Monitor in einem zweiten Modus,<br />

identifizieren Sie anhand der Prozess-ID, die Sie auch in den entsprechenden<br />

Basismonitoren finden, den Prozess mit der hohen CPU-<br />

Auslastung, <strong>und</strong> entnehmen Sie den Monitoren, welches Programm<br />

bzw. welche Tabelle, Anfrage etc. der Prozess gerade bearbeitet.<br />

<br />

<br />

<br />

<br />

<br />

SAP-Workprozesse der <strong>ABAP</strong>-Instanz<br />

Starten Sie in einem zweiten Modus die SAP-Workprozess-Übersicht<br />

(siehe Abschnitt 2.5, »<strong>Analyse</strong> der SAP-Workprozesse«). Der<br />

Workprozess-Übersicht entnehmen Sie u. a. den Namen des laufenden<br />

<strong>ABAP</strong>-Programms <strong>und</strong> des zugehörigen Benutzers.<br />

Serverprozess der Java-Instanz<br />

Starten Sie die SAP Management Console (siehe Abschnitt 10.3,<br />

»SAP Management Console«). Prozessinterna erhalten Sie durch<br />

einen Thread-Dump.<br />

TREX-Prozesse<br />

Starten Sie das TREX-Administrationswerkzeug (siehe Abschnitt<br />

14.2, »Performanceanalyse auf dem TREX durchführen«). Im<br />

Monitor Services finden Sie Details zu den TREX-Services.<br />

ICM<br />

Starten Sie den ICM-Monitor (siehe Abschnitt 2.6, »<strong>Analyse</strong> des<br />

Internet Communication Managers (ICM)«).<br />

<strong>Datenbank</strong>prozesse<br />

Starten Sie im DBA-Cockpit den <strong>Datenbank</strong>prozessmonitor (siehe<br />

Abschnitt 2.3.3, »Identifizierung teurer SQL-Anweisungen«), um<br />

84


<strong>Hardware</strong>analyse 2.2<br />

die SQL-Anweisungen zu identifizieren, die aktuell <strong>von</strong> der <strong>Datenbank</strong><br />

bearbeitet werden.<br />

Die Prozessübersicht auf Betriebssystemebene bietet Ihnen also<br />

zusammen mit den genannten Monitoren vergleichsweise bequem<br />

die Möglichkeit, Programme, Transaktionen bzw. SQL-Anweisungen<br />

oder TREX-Anfragen mit hoher CPU-Auslastung zu identifizieren.<br />

Ein CPU-Engpass kann durch externe Prozesse verursacht werden. Finden<br />

Sie in der Prozessübersicht externe Prozesse (d. h. Prozesse, die<br />

nicht direkt zum SAP-System gehören) mit einem hohen CPU-Konsum,<br />

die zu einem CPU-Engpass führen, sollten Sie prüfen, ob diese<br />

für den Betrieb Ihres Systems notwendig sind oder ob sie abgeschaltet<br />

oder auf einen anderen Rechner verlagert werden können. Beispiele<br />

für externe Prozesse sind: Verwaltungssoftware, Virenscanner,<br />

Backup, externe Systeme, Bildschirmschoner (!) etc.<br />

Externe Prozesse<br />

Identifizierung eines CPU-Engpasses<br />

Sie beobachten während Ihrer Hauptarbeitszeit einen CPU-Engpass. In der<br />

Prozessübersicht des Betriebssystemmonitors stellen Sie fest, dass ein SAP-<br />

Workprozess über Minuten hinweg eine CPU-Auslastung <strong>von</strong> 30 % zeigt.<br />

In der SAP-Workprozess-Übersicht identifizieren Sie ein lang laufendes<br />

Hintergr<strong>und</strong>programm. In diesem Fall sollten Sie prüfen, ob dieses Hintergr<strong>und</strong>programm<br />

zu Zeiten niedriger Dialoglast eingeplant werden kann.<br />

Analog dem Vorgehen bei einem CPU-Engpass können Sie sich bei<br />

einem Hauptspeicherengpass auf die Suche nach Programmen mit<br />

hohem Speicherbedarf machen. Vergleichen Sie dazu Kapitel 6,<br />

»Speicherkonfiguration«.<br />

Betriebssysteme verwalten in der Regel einen eigenen File System<br />

Cache. Dieser Cache konkurriert mit dem SAP-System <strong>und</strong> der <strong>Datenbank</strong><br />

um die Nutzung des Hauptspeichers. Ist der Cache zu groß eingestellt,<br />

kommt es zu hohen Paging-Raten, obwohl mehr physischer<br />

Hauptspeicher verfügbar ist, als durch SAP-System <strong>und</strong> <strong>Datenbank</strong><br />

allokiert wurden. Wir empfehlen Ihnen, diesen Cache auf 7 bis 10 %<br />

des physischen Speichers zu reduzieren.<br />

Die Betriebssystemparameter zur Einstellung des File System Caches<br />

sind z. B. dbc_max_pct bei HP-UX, ubc-maxpercent bei Digital UNIX<br />

<strong>und</strong> maxperm bei AIX.<br />

Speicherbedarf<br />

einzelner<br />

Programme<br />

File System Cache<br />

minimieren<br />

UNIX<br />

85


2<br />

<strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong> <strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

Windows<br />

Um den Microsoft Windows File Cache zu minimieren, rufen Sie die<br />

Netzwerkeinstellung (Symbol: Network) im Control Panel Ihres<br />

Windows-Betriebssystems auf. Wählen Sie die Registerkarte Services,<br />

Service Server, Schaltfläche Properties. Wählen Sie in der folgenden<br />

Maske unter Optimization die Option Maximize Throughput<br />

for Network Applications aus, <strong>und</strong> bestätigen Sie mit OK. Um<br />

den so reduzierten File Cache zu aktivieren, muss der Rechner neu<br />

gestartet werden.<br />

Ein Hauptspeicherengpass kann zu einem erhöhten CPU-Konsum<br />

aufgr<strong>und</strong> starken Pagings <strong>und</strong> damit zum CPU-Engpass führen. Die<br />

Beseitigung des Hauptspeicherengpasses kann also unter Umständen<br />

ein Verschwinden des CPU-Engpasses mit sich bringen.<br />

2.2.2 Identifizierung <strong>von</strong> Schreib-/Lese-(I/O-)Problemen<br />

Im Betriebssystemmonitor (Transaktionscode ST06) finden Sie in der<br />

<strong>Analyse</strong>sicht Snapshot Platte u. a. Informationen über die Auslastung<br />

der Festplatten <strong>und</strong> – sofern das Betriebssystem diese korrekt<br />

zur Verfügung stellt – über Warte- <strong>und</strong> Antwortzeiten der Platten.<br />

Festplattenmonitor<br />

Durch einen Doppelklick auf eine Zeile erhalten Sie für die ausgewählte<br />

Festplatte einen Überblick über die mittleren Antwortzeiten<br />

innerhalb der letzten 24 St<strong>und</strong>en. Tabelle 2.2 listet die angezeigten<br />

Felder <strong>und</strong> ihre Bedeutung auf.<br />

Feld<br />

Disk<br />

Auslastung (%)<br />

Queue-Länge<br />

Wartezeit (ms)<br />

Servicezeit (ms)<br />

Übertragung (KB/s)<br />

Operationen (per Sec)<br />

Antwortzeit (ms)<br />

Bedeutung<br />

Name der Festplatte auf Betriebssystemebene<br />

Auslastung der Platte (in Prozent)<br />

Anzahl der Prozesse, die auf I/O-Operationen<br />

warten<br />

Wartezeit (in Millisek<strong>und</strong>en)<br />

Servicezeit (in Millisek<strong>und</strong>en)<br />

Übertragungsrate (in KB/Sek<strong>und</strong>e)<br />

Anzahl der I/O-Operationen (pro Sek<strong>und</strong>e)<br />

mittlere Antwortzeit der Festplatte (in Millisek<strong>und</strong>en)<br />

Tabelle 2.2 Felder des Festplattenmonitors<br />

86


<strong>Hardware</strong>analyse 2.2<br />

Stellen Sie anhand dieser Monitore fest, dass einzelne Platten stark<br />

ausgelastet sind (Auslastung (%) > 50 %), liegt ein potenzieller I/O-<br />

Engpass vor. Aus dem SAP-System heraus ist allerdings nur eine sehr<br />

beschränkte Aussage über I/O-Probleme möglich. Eine detaillierte<br />

<strong>Analyse</strong> kann nur mit Mitteln des <strong>Hardware</strong>partners durchgeführt<br />

werden.<br />

I/O-Engpass<br />

Ein I/O-Engpass ist insbesondere dann kritisch, wenn auf dieser Festplatte<br />

der Auslagerungsspeicher des Betriebssystems liegt. Darüber<br />

hinaus ist der Betriebssystemmonitor für den <strong>Datenbank</strong>server <strong>von</strong><br />

besonderem Interesse. Zusammen mit dem <strong>Datenbank</strong>monitor können<br />

mit dieser Anzeige Engpässe beim Lesen bzw. Schreiben auf die<br />

Festplatten eingegrenzt werden. Weitere Details zu diesem Problem<br />

finden Sie in Abschnitt 2.2.2, »Identifizierung <strong>von</strong> Schreib-/Lese-(I/O-)<br />

Problemen«.<br />

2.2.3 Weitere <strong>Analyse</strong>n auf Betriebssystemebene<br />

Das SAP-System protokolliert für UNIX-Betriebssysteme alle Änderungen<br />

der Betriebssystemparameter. Das Änderungsprotokoll kann<br />

über den folgenden Pfad im Betriebssystemmonitor angezeigt werden:<br />

Weitere Funktionen Parameteränderungen. Positionieren<br />

Sie den Cursor auf dem Namen eines Servers, <strong>und</strong> wählen Sie die<br />

Schaltfläche History of File. Anhand des Änderungsprotokolls lässt<br />

sich feststellen, ob Performanceprobleme eventuell erst nach Parameteränderungen<br />

aufgetreten sind <strong>und</strong> damit in Zusammenhang gebracht<br />

werden können.<br />

Mit dem Werkzeug Weitere Funktionen LAN-Überprüfung mit<br />

Ping lässt sich ein grober Netzwerktest durchführen. Sie können<br />

beliebige <strong>Datenbank</strong>-, Applikations- oder Präsentationsserver auswählen<br />

<strong>und</strong> die Netzwerkverbindung (z. B. die Antwortzeiten <strong>und</strong><br />

Datenverluste) testen. Auch wenn der Name der <strong>Analyse</strong> fälschlicherweise<br />

LAN-Überprüfung heißt, können auch Rechner im WAN angesprochen<br />

werden. Ein Beispiel für eine <strong>Analyse</strong> mit diesem Werkzeug<br />

finden Sie in Abschnitt 8.1.2, »Performance der GUI-Kommunikation<br />

analysieren <strong>und</strong> optimieren«.<br />

Parameteränderungen<br />

Netzwerk-Check<br />

87


2<br />

<strong>Analyse</strong> <strong>von</strong> <strong>Hardware</strong>, <strong>Datenbank</strong> <strong>und</strong> <strong>ABAP</strong>-<strong>Applikationsserver</strong><br />

Zusammenfassung<br />

Die Gefahr eines <strong>Hardware</strong>engpasses besteht, wenn:<br />

<br />

<br />

<br />

im St<strong>und</strong>enmittel weniger als 20 % CPU-Kapazität frei sind<br />

mehr als 20 % des physischen Hauptspeichers pro St<strong>und</strong>e ausgelagert<br />

(»gepaged«) werden<br />

einzelne Festplatten der <strong>Datenbank</strong> zu mehr als 50 % ausgelastet<br />

sind<br />

Insbesondere die Überlastung des <strong>Datenbank</strong>servers kann zu Performanceproblemen<br />

führen, die sich systemweit auswirken. Prüfen Sie<br />

mithilfe des Workload-Monitors, ob sich die hohe CPU-Auslastung<br />

bzw. die hohen Paging-Raten negativ auf die Antwortzeiten des SAP-<br />

Systems bzw. der <strong>Datenbank</strong> auswirken (siehe Abschnitt 3.4, »Workload-<strong>Analyse</strong><br />

durchführen«).<br />

<strong>Hardware</strong>engpass<br />

analysieren<br />

Abbildung 2.3 <strong>und</strong> Abbildung 2.4 zeigen den <strong>Analyse</strong>pfad bei einem<br />

<strong>Hardware</strong>engpass: Häufig kann ein <strong>Hardware</strong>engpass durch die Neuverteilung<br />

der Last (z. B. durch das Verlagern <strong>von</strong> Workprozessen)<br />

behoben werden. Ursachen für einen CPU-Engpass sind z. B. ineffiziente<br />

Applikationen, die im <strong>Datenbank</strong>prozessmonitor <strong>und</strong> in der<br />

Workprozess-Übersicht identifiziert werden können, oder externe,<br />

nicht zu einer SAP-Instanz bzw. der <strong>Datenbank</strong>instanz gehörende<br />

Prozesse. Daher muss immer eine vollständige Performanceanalyse<br />

durchgeführt werden, bevor endgültig entschieden werden kann, ob<br />

die vorhandene <strong>Hardware</strong> für die gegebenen Anforderungen an das<br />

SAP-System ausreicht oder nicht.<br />

Die Flussdiagramme in Abbildung 2.3 <strong>und</strong> Abbildung 2.4 zeigen<br />

Ihnen schematisch das Vorgehen bei einem <strong>Hardware</strong>engpass. Sie<br />

verweisen auf später in diesem Buch beschriebene Monitore <strong>und</strong><br />

<strong>Analyse</strong>n. Sie werden ähnliche Diagramme an vielen Stellen dieses<br />

Buches finden.<br />

88


<strong>Datenbank</strong>analyse 2.3<br />

Betriebssystemmonitor (Transaktionscode ST06)<br />

Hohe CPU-Auslastung (CPU idle im St<strong>und</strong>enmittel < 35%)<br />

Ist noch CPU-Speicherkapazität auf anderen Rechnern des Systems frei?<br />

SAP-Workprozesse <strong>und</strong> Benutzer neu verteilen!<br />

Betriebssystemmonitor (Transaktionscode ST06): Top-CPU-Prozesse<br />

SAP-Workprozesse mit hoher CPU-Auslastung<br />

Workprozess-Übersicht (Transaktionscode SM50 oder SM66)<br />

Detailanalyse des <strong>ABAP</strong>-Programms (mit <strong>ABAP</strong>-Trace SE30)<br />

<strong>Datenbank</strong>prozesse mit hoher CPU-Auslastung?<br />

<strong>Datenbank</strong>prozessmonitor (DBA-Cockpit, z. B. DB2 Applications)<br />

Detailanalyse teurer SQL-Anweisungen<br />

Externe Prozesse mit hoher CPU-Auslastung?<br />

Abschalten, optimieren oder verlagern!<br />

Abbildung 2.3 Detailanalyse eines <strong>Hardware</strong>engpasses (CPU)<br />

Betriebssystemmonitor (Transaktionscode ST06)<br />

Hohe Paging-Rate (Paging pro St<strong>und</strong>e > 20 % des RAM)?<br />

Ist noch CPU- <strong>und</strong> Speicherkapazität auf anderen Rechnern des Systems frei?<br />

SAP-Workprozesse <strong>und</strong> Benutzer neu verteilen<br />

File System Cache > 10 % des RAM?<br />

File System Cache reduzieren<br />

SAP-Speicherkonfigurationsmonitor (Transaktionscode ST02): Modusliste<br />

Benutzer mit hohem Speicherverbrauch?<br />

Detailanalyse der Aktionen des Benutzers<br />

Abbildung 2.4 Detailanalyse eines <strong>Hardware</strong>engpasses (Hauptspeicher)<br />

2.3 <strong>Datenbank</strong>analyse<br />

Der SAP NetWeaver Application Server (AS) kann zurzeit mit acht<br />

verschiedenen relationalen <strong>Datenbank</strong>systemen sowie mit der<br />

Hauptspeicherdatenbank SAP HANA betrieben werden. Auch wenn<br />

diese <strong>Datenbank</strong>systeme alle eine unterschiedliche Architektur besit-<br />

89


Sperren auf <strong>Datenbank</strong>tabellen oder Geschäftsobjekten sind<br />

die Voraussetzung für konsistente Daten. Werden Sperren zu<br />

lange gehalten, kann es im System zu Performanceproblemen<br />

kommen, da Benutzer <strong>und</strong> Prozesse auf die Freigabe der Sperren<br />

warten müssen. Dieses Kapitel stellt detailliert die Sperrkonzepte<br />

<strong>und</strong> deren Überwachung dar.<br />

9 Sperren<br />

In einem SAP-System können viele Benutzer gleichzeitig Inhalte <strong>von</strong><br />

<strong>Datenbank</strong>tabellen lesen. Bei Änderungen des Datenbestands ist es<br />

jedoch notwendig, sicherzustellen, dass zu einem bestimmten Zeitpunkt<br />

nur genau ein Benutzer einen bestimmten Tabelleninhalt<br />

ändern kann. Zu diesem Zweck werden Tabelleninhalte während der<br />

Änderung gesperrt. Die Sperrkonzepte <strong>von</strong> SAP-System <strong>und</strong> <strong>Datenbank</strong>system<br />

werden im ersten Abschnitt dieses Kapitels erklärt.<br />

Werden Sperren lange Zeit gehalten, kann es zu Wartesituationen<br />

kommen, die den Durchsatz des SAP-Systems beschränken. Mit allgemeinen<br />

Performanceaspekten <strong>von</strong> Sperren beschäftigt sich der zweite<br />

Abschnitt dieses Kapitels.<br />

Für die Verfügbarkeitsprüfung nach ATP-Logik (Available to Promise)<br />

<strong>und</strong> die Nummernvergabe für Dokumente verwendet das SAP-System<br />

spezielle Pufferungstechniken, die die Sperrzeit minimieren <strong>und</strong><br />

den Durchsatz maximieren sollen. Diese Techniken werden im dritten<br />

<strong>und</strong> vierten Abschnitt diskutiert.<br />

Wann sollten Sie dieses Kapitel lesen?<br />

Dieses Kapitel sollten Sie lesen:<br />

<br />

<br />

um sich über <strong>Datenbank</strong>sperren <strong>und</strong> SAP-Sperren (SAP-Enqueues)<br />

zu informieren<br />

wenn Sie in Ihrem SAP-System Probleme mit <strong>Datenbank</strong>sperren<br />

oder SAP-Enqueues identifiziert haben <strong>und</strong> diese detaillierter analysieren<br />

wollen<br />

403


9<br />

Sperren<br />

Dieses Kapitel ist keine Anleitung zur Entwicklung <strong>von</strong> SAP-Transaktionen.<br />

Dazu verweisen wir Sie auf <strong>ABAP</strong>-Lehrbücher oder die SAP-<br />

Onlinehilfe.<br />

9.1 Sperrkonzepte <strong>von</strong> <strong>Datenbank</strong>system <strong>und</strong><br />

SAP-System<br />

Datenkonsistenz<br />

Die Konsistenz der Daten in einem <strong>Datenbank</strong>- oder SAP-System wird<br />

durch Sperren realisiert. Das SAP-System <strong>und</strong> das <strong>Datenbank</strong>system<br />

bieten jeweils eigene Sperrkonzepte an, die zwar beide demselben<br />

Zweck dienen (nämlich die Datenkonsistenz zu gewährleisten), aber<br />

unterschiedliche technische Realisierungen <strong>und</strong> Einsatzbereiche<br />

haben. Sperren, die vom <strong>Datenbank</strong>system verwaltet werden, heißen<br />

<strong>Datenbank</strong>sperren (Database Locks), die vom SAP-System verwalteten<br />

Sperren heißen SAP-Enqueues.<br />

Bestellen eines Computers<br />

Beim Konfigurieren <strong>und</strong> Bestellen eines neuen Computers muss geprüft<br />

werden, ob alle gewünschten Komponenten zur Verfügung stehen, z. B.<br />

Gehäuse, CPU, Hauptspeicher, Festplatte etc. Dabei gilt der Gr<strong>und</strong>satz<br />

»ganz oder gar nicht«, d. h., wenn eine Komponente ausverkauft ist, kann<br />

die Verfügbarkeit des gesamten Rechners nicht bestätigt werden. Wird<br />

nun die Verfügbarkeit der unterschiedlichen Komponenten nacheinander<br />

geprüft, muss für diesen Prüfzeitraum sichergestellt werden, dass andere<br />

Benutzer nicht auf die einmal geprüften <strong>und</strong> bestätigten Komponenten zugreifen,<br />

bis die gesamte Bestellung endgültig bestätigt oder abgebrochen<br />

wurde.<br />

9.1.1 <strong>Datenbank</strong>sperren<br />

<strong>Datenbank</strong>sperren werden vom Lock Handler der <strong>Datenbank</strong>instanz<br />

verwaltet. Die gesperrte Einheit ist eine Zeile einer <strong>Datenbank</strong>tabelle<br />

(spezielle Ausnahmen werden am Ende <strong>von</strong> Abschnitt 9.2.1, »<strong>Datenbank</strong>sperren«<br />

erläutert). <strong>Datenbank</strong>sperren werden bei allen ändernden<br />

SQL-Anweisungen (UPDATE, INSERT, DELETE) sowie bei der<br />

Anweisung SELECT FOR UPDATE gesetzt. Sie werden so lange gehalten,<br />

bis mit der SQL-Anweisung COMMIT (<strong>Datenbank</strong>-Commit) alle Änderungen<br />

auf der <strong>Datenbank</strong> für gültig erklärt <strong>und</strong> dann die <strong>Datenbank</strong>sperren<br />

gelöst werden. Den Zeitraum zwischen zwei <strong>Datenbank</strong>-<br />

404


Sperrkonzepte <strong>von</strong> <strong>Datenbank</strong>system <strong>und</strong> SAP-System 9.1<br />

Commits bezeichnet man als <strong>Datenbank</strong>transaktion. Alternativ können<br />

alle ändernden SQL-Anweisungen mit der SQL-Anweisung<br />

ROLLBACK (<strong>Datenbank</strong>-Rollback) zurückgenommen werden. In diesem<br />

Fall werden die gehaltenen <strong>Datenbank</strong>sperren ebenfalls gelöst.<br />

Bestellen eines Computers (Fortsetzung)<br />

Das oben erläuterte Beispiel der Verfügbarkeitsprüfung beim Bestellen<br />

eines Computers mithilfe <strong>von</strong> <strong>Datenbank</strong>sperren realisieren Sie in der Programmierung<br />

mit der SQL-Anweisung SELECT FOR UPDATE: Mit dieser Anweisung<br />

wird gleichzeitig der Bestand einer Komponente gelesen <strong>und</strong> eine<br />

Sperre auf den entsprechenden Bestand gesetzt. Haben Sie diese Prüfung<br />

für alle Komponenten erfolgreich durchgeführt, ändern Sie anschließend<br />

den Bestand (mit einem UPDATE auf die entsprechenden Zeilen) <strong>und</strong> geben<br />

mit einem COMMIT alle Sperren frei. Während eine Sperre besteht, können<br />

andere Benutzer die Daten zwar lesen (ein einfaches SELECT ist möglich),<br />

nicht aber selbst die Zeile sperren. Es kann also weder ein UPDATE noch ein<br />

SELECT FOR UPDATE durchgeführt werden. Eine solche Sperre bezeichnet<br />

man als exklusiv.<br />

Am Ende eines Transaktionsschrittes löst der SAP-Workprozess automatisch<br />

einen <strong>Datenbank</strong>-Commit (oder einen <strong>Datenbank</strong>-Rollback)<br />

aus. Damit werden alle <strong>Datenbank</strong>sperren gelöst. Daraus ergibt sich,<br />

dass <strong>Datenbank</strong>sperren nicht über mehrere Transaktionsschritte<br />

(d. h. im SAP-System über mehrere Eingabebildschirme) hinweg<br />

gehalten werden können.<br />

9.1.2 SAP-Enqueues<br />

Um Sperren über mehrere Schritte einer SAP-Transaktion hinweg zu<br />

halten, verwenden Sie die SAP-eigene Enqueue-Verwaltung. Die SAP-<br />

Enqueues werden vom Enqueue-Workprozess in der Enqueue-<br />

Tabelle verwaltet, die sich im Hauptspeicher befindet. Damit SAP-<br />

Enqueues auch beim Stoppen der SAP-Instanz erhalten bleiben, werden<br />

diese zusätzlich in einer lokalen Datei auf dem Enqueue-Server<br />

gesichert.<br />

Durch einen SAP-Enqueue wird ein logisches Objekt gesperrt. So<br />

können z. B. Zeilen aus mehreren <strong>Datenbank</strong>tabellen gesperrt werden,<br />

die zusammen einen Beleg bilden. Ein SAP-Enqueue kann auch<br />

eine oder mehrere Tabellen sperren. SAP-Enqueue-Objekte werden<br />

im <strong>ABAP</strong> Dictionary (Abschnitt Sperrobjekte) angelegt <strong>und</strong> geändert.<br />

Sie hängen eng mit den Begriffen SAP-Transaktion <strong>und</strong> SAP Logical<br />

SAP-Enqueue-<br />

Objekte<br />

405


9<br />

Sperren<br />

Unit of Work (SAP LUW) zusammen. Zu beiden Begriffen finden Sie<br />

umfangreiche Dokumentationen in der <strong>ABAP</strong>-Literatur zur Dialogprogrammierung.<br />

Die Funktionsweise <strong>und</strong> Anwendung dieser Techniken<br />

innerhalb <strong>von</strong> <strong>ABAP</strong>-Programmen wird daher an dieser Stelle<br />

nicht erläutert. Es soll genügen, hier die für eine Performanceanalyse<br />

relevanten Aspekte darzustellen. Werden Performanceprobleme aufgr<strong>und</strong><br />

eines fehlerhaften Einsatzes <strong>von</strong> SAP-Enqueues entdeckt, muss<br />

in jedem Fall der zuständige <strong>ABAP</strong>-Entwickler hinzugezogen werden.<br />

Ein SAP-Enqueue ist eine logische Sperre innerhalb des SAP-Systems.<br />

Eine direkt auf der <strong>Datenbank</strong> ausgeführte SQL-Anweisung oder ein<br />

k<strong>und</strong>eneigenes <strong>ABAP</strong>-Programm, das sich nicht an die SAP-Enqueue-<br />

Konventionen hält, kann eine Tabellenzeile in der <strong>Datenbank</strong> ändern,<br />

obwohl diese Zeile im SAP-System durch einen SAP-Enqueue<br />

gesperrt ist. SAP-Enqueues gelten also nur innerhalb des SAP-Systems.<br />

<strong>Datenbank</strong>sperren dagegen sind für alle Zugriffe wirksam. Sie<br />

sperren eine Tabellenzeile »hart« für alle <strong>Datenbank</strong>benutzer, also<br />

auch für solche außerhalb des SAP-Systems.<br />

Funktionsbausteine<br />

Zu jedem aktivierten SAP-Enqueue-Objekt existieren zwei Funktionsbausteine:<br />

ein Enqueue-Baustein <strong>und</strong> ein Dequeue-Baustein. Ein SAP-<br />

Enqueue wird innerhalb eines <strong>ABAP</strong>-Programms explizit durch den<br />

Aufruf des zugehörigen Enqueue-Bausteins gesetzt <strong>und</strong> explizit durch<br />

den entsprechenden Dequeue-Baustein freigegeben. SAP-Enqueues<br />

können damit über mehrere Transaktionsschritte gehalten werden.<br />

Alle SAP-Enqueues werden allerdings automatisch bei Beendigung<br />

einer SAP-Transaktion freigegeben.<br />

Bestellen eines Computers (Fortsetzung)<br />

Anhand unseres Beispiels der Rechnerkonfiguration <strong>und</strong> -bestellung erläutern<br />

wir die Funktionsweise der SAP-Enqueue-Verwaltung: Zum Rechner<br />

gehören z. B. Gehäuse, CPU, Hauptspeicher <strong>und</strong> Festplatte. Die einzelnen<br />

Komponenten werden auf unterschiedlichen Eingabebildschirmen, d. h.<br />

mit mehreren Transaktionsschritten, bearbeitet <strong>und</strong> zur Bearbeitung durch<br />

SAP-Enqueues gesperrt. Nachdem sichergestellt ist, dass jede Komponente<br />

einzeln reserviert werden kann, wird die Bestellung des Computers<br />

bestätigt. Damit ist der Dialogteil der Transaktion abgeschlossen.<br />

Ein Verbuchungs-Workprozess führt anschließend unter dem Schutz der<br />

SAP-Enqueues die notwendigen Änderungen der <strong>Datenbank</strong>tabellen aus.<br />

Erst nachdem der Verbuchungs-Workprozess seine Arbeit beendet hat, ist<br />

die SAP LUW abgeschlossen, <strong>und</strong> die SAP-Enqueues werden wieder freigegeben.<br />

406


Überwachung <strong>von</strong> Sperren 9.2<br />

Zu einer SAP LUW gehören eventuell noch Bausteine, die in der V2-<br />

Verbuchung bearbeitet werden. Dieses erfolgt ohne SAP-Enqueues.<br />

In Bausteinen, die V2-verbuchbar sind, dürfen also nur Informationen<br />

bearbeitet werden, die nicht des Schutzes durch SAP-Enqueues<br />

bedürfen (siehe auch Abschnitt 7.1.8, »Verbuchung«).<br />

Die wichtigsten Eigenschaften <strong>von</strong> <strong>Datenbank</strong>sperren <strong>und</strong> SAP-<br />

Enqueues fasst Tabelle 9.1 zusammen.<br />

Gesperrtes<br />

Objekt<br />

Sperre<br />

wird<br />

gesetzt<br />

Sperre<br />

wird freigegeben<br />

Maximale<br />

Haltedauer<br />

Verhalten<br />

bei Sperrkonflikt<br />

Wartesituation (Exclusive<br />

Lockwait, siehe auch<br />

Abschnitt 9.2.1, »<strong>Datenbank</strong>sperren«)<br />

Überwachung<br />

DB-Sperren (Locks)<br />

<br />

einzelne Zeile einer<br />

<strong>Datenbank</strong>tabelle<br />

implizit durch ändernde<br />

SQL-Anweisungen (z. B.<br />

UPDATE) <strong>und</strong> SELECT FOR<br />

UPDATE<br />

<br />

<br />

<br />

implizit durch SQL-<br />

Anweisung COMMIT<br />

bzw. ROLLBACK<br />

gr<strong>und</strong>sätzlich am Ende<br />

eines Transaktionsschrittes<br />

Länge eines Transaktionsschrittes<br />

Transaktionscode DB01,<br />

Exclusive Lockwaits<br />

SAP-Sperren (Enqueues)<br />

<br />

<br />

logisches Objekt (z. B. ein<br />

Beleg)<br />

definiert im <strong>ABAP</strong><br />

Dictionary<br />

explizit durch Aufruf eines<br />

Enqueue-Bausteins im<br />

<strong>ABAP</strong>-Programm<br />

<br />

<br />

explizit durch Aufruf eines<br />

Dequeue-Bausteins<br />

gr<strong>und</strong>sätzlich am Ende<br />

einer SAP-Transaktion<br />

über mehrere Transaktionsschritte<br />

hinweg<br />

programmabhängig, z. B.<br />

Fehlermeldung »Material X<br />

ist gesperrt«<br />

Transaktionscode SM12,<br />

Sperrverwaltung<br />

Tabelle 9.1 Eigenschaften <strong>von</strong> <strong>Datenbank</strong>sperren <strong>und</strong> SAP-Enqueues<br />

9.2 Überwachung <strong>von</strong> Sperren<br />

In diesem Abschnitt geben wir Ihnen Hinweise zur Überwachung<br />

<strong>von</strong> <strong>Datenbank</strong>sperren <strong>und</strong> SAP-Enqueues.<br />

407


9<br />

Sperren<br />

9.2.1 <strong>Datenbank</strong>sperren<br />

Exclusive<br />

Lockwaits<br />

Was geschieht bei einem Sperrkonflikt, d. h., wenn ein Workprozess<br />

ein Objekt sperren will, das bereits gesperrt ist? Bei <strong>Datenbank</strong>sperren<br />

wartet der zweite Prozess so lange, bis der Halter der Sperre diese<br />

wieder freigegeben hat. Diese Wartesituation bezeichnet man als<br />

Exclusive Lockwait. Bei den meisten <strong>Datenbank</strong>en gibt es keine zeitliche<br />

Beschränkung für diese Sperre. Wird die Sperre durch ein fehlerhaftes<br />

Verhalten des Programms nicht wieder freigegeben, kann die<br />

Wartesituation ad infinitum bestehen.<br />

Zu einer Eskalation kann es kommen, wenn ein Programm eine für das<br />

SAP-System »lebenswichtige« Sperre (z. B. auf die Nummernkreistabelle<br />

NRIV) hält <strong>und</strong> nicht wieder freigibt. In diesem Fall besteht die<br />

Gefahr, dass ein Workprozess nach dem anderen auf diese Sperre wartet.<br />

Sind schließlich alle Workprozesse belegt, besteht schließlich aus<br />

dem SAP-Systems heraus keine Möglichkeit des Eingreifens mehr. Es<br />

bleibt als letzte Alternative nur noch, mit Mitteln des Betriebssystems<br />

den fehlerhaften Prozess abzubrechen (sofern er dann noch ermittelt<br />

werden kann).<br />

Sperrwartesituation<br />

prüfen<br />

Die aktuellen Sperrwartesituationen werden im <strong>Datenbank</strong>-Sperrmonitor<br />

(Transaktionscode DB01) angezeigt, den Sie im DBA-Cockpit<br />

(Transaktionscode DBACOCKPIT) über Performance Wartesituationen<br />

auf Sperren <strong>und</strong> Deadlocks oder in der globalen Workprozess-Übersicht<br />

(Transaktionscode SM66) über Springen DB Locks<br />

starten können.<br />

Die Beschreibung dieses Monitors <strong>und</strong> Hinweise, wie Sie bei Sperrwartesituationen<br />

vorgehen können, finden Sie in Abschnitt 2.3.5,<br />

»Weitere <strong>Analyse</strong>n auf <strong>Datenbank</strong>ebene«. Sperrwartesituationen tragen<br />

zur <strong>Datenbank</strong>zeit bei <strong>und</strong> führen in den Statistiken des Workload-Monitors<br />

zu einer erhöhten <strong>Datenbank</strong>zeit. Von einigen <strong>Datenbank</strong>systemen<br />

werden Sperrwartezeiten explizit aufgezeichnet <strong>und</strong><br />

im <strong>Datenbank</strong>monitor angezeigt.<br />

Sperrsituation auf der <strong>Datenbank</strong><br />

Mit dem folgenden Beispielprogramm können Sie eine Sperrsituation auf<br />

der <strong>Datenbank</strong> provozieren:<br />

REPORT zts_lock.<br />

DATA: lv_text type natxt.<br />

SELECT SINGLE FOR UPDATE text FROM T100 INTO lv_text WHERE sprsl<br />

408


Überwachung <strong>von</strong> Sperren 9.2<br />

= 'DE' AND ARBGB = '00' AND msgnr = '001'.<br />

BREAK-POINT.<br />

Gehen Sie dazu wie folgt vor:<br />

1. Starten Sie das Programm in der <strong>ABAP</strong> Workbench (z. B. über Transaktionscode<br />

SE38). Nach wenigen Sek<strong>und</strong>en startet der Debugger, das<br />

Programm hält am Befehl BREAK-POINT an. Zuvor hat das Programm mit<br />

dem Befehl SELECT SINGLE FOR UPDATE eine <strong>Datenbank</strong>sperre gesetzt.<br />

Da das Programm im Debug-Modus wartet, wird diese <strong>Datenbank</strong>sperre<br />

nicht zurückgenommen.<br />

2. Starten Sie nun in einem zweiten Modus das Programm erneut. Im<br />

zweiten Modus wird Ihnen die Sanduhr angezeigt.<br />

3. Sie können das Programm erneut in einem dritten Modus starten, es<br />

wird Ihnen wiederum die Sanduhr angezeigt.<br />

4. Starten Sie in einem weiteren Modus den <strong>Datenbank</strong>sperrmonitor, wie<br />

zuvor beschrieben. Die Sperrsituation wird angezeigt, <strong>und</strong> Sie können<br />

erkennen, welcher Workprozess die Sperre hält <strong>und</strong> welcher wartet.<br />

Mithilfe der Workprozess-Übersicht (Transaktionscode SM50) <strong>und</strong> des<br />

<strong>Datenbank</strong>prozessmonitors können Sie nun analysieren, was der Prozess,<br />

der die Sperre hält, tut. In unserem Beispiel finden Sie als Status in<br />

der Prozessübersicht hält <strong>und</strong> als Gr<strong>und</strong> Debug.<br />

5. Gehen Sie nun in den Debugger, <strong>und</strong> führen Sie dort die Ausführung des<br />

Programms im ersten Modus fort. Das Programm wird beendet, die<br />

<strong>Datenbank</strong>sperre wird durch ein implizites Commit oder Rollback der<br />

<strong>Datenbank</strong>schnittstelle abgeräumt, <strong>und</strong> damit kann das Programm im<br />

zweiten Modus, das bisher beim Befehl SELECT SINGLE FOR UPDATE wartete,<br />

fortfahren. Es wird also innerhalb kürzester Zeit ebenfalls den<br />

Befehl BREAK-POINT erreichen <strong>und</strong> den Debugger starten.<br />

6. Setzen Sie auch im zweiten <strong>und</strong>, falls Sie das Programm in weiteren<br />

Modi gestartet haben, auch in diesen das Programm im Debugger fort,<br />

um die Sperren freizugeben.<br />

Gr<strong>und</strong>sätzlich müssen Sie in Programmen darauf achten, dass Sperren<br />

möglichst spät angefordert werden. Es ist also besser, zunächst<br />

alle benötigten Informationen <strong>von</strong> der <strong>Datenbank</strong> zu lesen <strong>und</strong> zu<br />

bearbeiten, bevor Änderungen in der <strong>Datenbank</strong> vorgenommen <strong>und</strong><br />

Sperren gesetzt werden. In Abbildung 9.1 ist dies schematisch dargestellt:<br />

Im oberen Teil der Abbildung werden während einer <strong>Datenbank</strong>transaktion<br />

mehrere Änderungen auf der <strong>Datenbank</strong> vorgenommen<br />

<strong>und</strong> damit <strong>Datenbank</strong>sperren unnötig lange gehalten. Der<br />

untere Teil der Abbildung zeigt die elegantere Art der Programmierung:<br />

Während der <strong>Datenbank</strong>transaktion werden die Änderungen<br />

in einer internen Tabelle gesammelt <strong>und</strong> erst zum Ende der Transak-<br />

Typische Probleme<br />

409


9<br />

Sperren<br />

tion gebündelt in der <strong>Datenbank</strong> ausgeführt. Folglich verkürzt sich<br />

die Sperrzeit auf der <strong>Datenbank</strong>.<br />

A)<br />

<strong>ABAP</strong><br />

<strong>Datenbank</strong><br />

Einzelne Updates<br />

<strong>Datenbank</strong>sperren<br />

COMMIT<br />

B)<br />

<strong>ABAP</strong><br />

APPEND TO <br />

SORT <br />

UPDATE FROM<br />

<br />

COMMIT<br />

<strong>Datenbank</strong><br />

<strong>Datenbank</strong>sperren<br />

DB LUW<br />

Abbildung 9.1 Sperren sollen möglichst spät gesetzt werden.<br />

Ursachen<br />

Eine Ursache <strong>von</strong> Sperrproblemen, die in SAP-Systemen immer wieder<br />

beobachtet wird, sind K<strong>und</strong>enmodifikationen <strong>von</strong> Verbuchungsbausteinen.<br />

Die Trennung <strong>von</strong> Dialog- <strong>und</strong> Verbuchungsverarbeitung<br />

bringt den Vorteil mit sich, dass im Dialogteil einer Transaktion nur<br />

wenige Änderungen auf der <strong>Datenbank</strong> vorgenommen <strong>und</strong> damit<br />

auch nur wenige Sperren gesetzt werden. Vielmehr werden diese im<br />

Verbuchungsteil der Transaktion konzentriert. Mitunter werden Verbuchungsbausteine<br />

modifiziert, um z. B. eine k<strong>und</strong>eneigene Schnittstelle<br />

mit Daten zu versorgen. Wird diese Modifikation durchlaufen,<br />

nachdem bereits Sperren gesetzt wurden, <strong>und</strong> ist diese Modifikation<br />

inperformant, weil sie z. B. eine lang laufende SQL-Anweisung enthält,<br />

kommt es zu massiven Sperrproblemen in der Verbuchungsverarbeitung.<br />

Eine zweite Quelle <strong>von</strong> Sperrproblemen sind Hintergr<strong>und</strong>programme,<br />

die eine Sperre anfordern <strong>und</strong> dann mehrere St<strong>und</strong>en arbeiten,<br />

ohne ein <strong>Datenbank</strong>-Commit auszulösen. Sollen die gesperrten<br />

Objekte ebenfalls <strong>von</strong> Dialogtransaktionen bearbeitet werden, müssen<br />

diese warten, bis das Hintergr<strong>und</strong>programm beendet ist oder ein<br />

Commit auslöst. Eine Lösung für dieses Problem kann es sein, das<br />

410


Überwachung <strong>von</strong> Sperren 9.2<br />

Hintergr<strong>und</strong>programm in regelmäßigen Abständen ein Commit auslösen<br />

zu lassen (wenn dies vom Standpunkt der Datenkonsistenz<br />

möglich ist) oder es nur zu Zeiten einzuplanen, in denen es den Dialogbetrieb<br />

nicht stört. Ähnliche Probleme treten bei der Parallelisierung<br />

<strong>von</strong> Hintergr<strong>und</strong>läufen auf, d. h., wenn dasselbe Programm<br />

mehrfach parallel gestartet wird. Diese Parallelisierung macht jedoch<br />

nur dann Sinn, wenn die Selektionsbedingungen so gewählt werden,<br />

dass sich die parallel laufenden Programme nicht gegenseitig die<br />

Daten sperren.<br />

Deadlocks<br />

Während Sie sich im <strong>ABAP</strong> Debugger befinden, wird in der Regel kein <strong>Datenbank</strong>-Commit<br />

ausgelöst, d. h., alle <strong>Datenbank</strong>sperren bleiben bestehen,<br />

bis Sie den Debugger wieder verlassen. Vermeiden Sie es daher, in<br />

einem produktiven SAP-System mit dem Debugger zu arbeiten.<br />

Im Folgenden beschreiben wir ein Beispiel für eine Situation, die man als<br />

Deadlock bezeichnet. Nehmen wir an, die Workprozesse 1 <strong>und</strong> 2 wollen<br />

jeweils eine Liste <strong>von</strong> Materialien sperren. Workprozess 1 sperrt Material<br />

A <strong>und</strong> Workprozess 2 Material B. Anschließend fordert Workprozess 1 eine<br />

Sperre auf Material B an, Workprozess 2 eine Sperre auf Material A. Beide<br />

Workprozesse können die angeforderten Sperren nicht bekommen, da<br />

diese vom jeweils anderen gehalten werden. Es entsteht also eine Situation,<br />

in der sich beide Prozesse gegenseitig blockieren. Solche Deadlocks<br />

werden <strong>von</strong> der <strong>Datenbank</strong>instanz automatisch erkannt <strong>und</strong> aufgelöst,<br />

indem einem der beiden Workprozesse eine Fehlermeldung zurückgegeben<br />

wird. Diese führt dann zum Abbruch des <strong>ABAP</strong>-Programms <strong>und</strong> wird<br />

im SAP-Syslog protokolliert.<br />

Deadlocks können durch geschickte Programmierung leicht vermieden<br />

werden. Wird in unserem Beispiel das Programm so geändert, dass die Materialliste<br />

vor dem Sperren sortiert wird, wird immer zuerst Material A gesperrt<br />

<strong>und</strong> erst, wenn dies erfolgreich war, Material B. Damit ist ein Deadlock<br />

ausgeschlossen.<br />

Deadlock-Situationen sollten die absolute Ausnahme sein. Treten diese<br />

vermehrt auf, deutet dies auf einen Fehler im Programm oder in der Konfiguration<br />

der <strong>Datenbank</strong>instanz hin.<br />

Von einigen <strong>Datenbank</strong>systemen (z. B. DB2 <strong>und</strong> SAP MaxDB) werden<br />

in gewissen seltenen Fällen Einzelsatzsperren automatisch zu Tabellensperren<br />

zusammengefasst, wenn die Anzahl der gesperrten Zeilen<br />

einer Tabelle eine gewisse Quote im Verhältnis zur Gesamtzahl <strong>von</strong><br />

Zeilen in der Tabelle (z. B. 10 %) überschreitet. In diesem Fall entscheiden<br />

diese <strong>Datenbank</strong>ensysteme, dass es günstiger ist, die<br />

Tabellensperren<br />

411


9<br />

Sperren<br />

gesamte Tabelle für einen Workprozess zu sperren, anstatt viele Sperren<br />

auf einzelne Zeilen zu verwalten. Praktische Konsequenzen hat<br />

dieses Verhalten z. B. für die Parallelisierung <strong>von</strong> Programmen, die<br />

eine gesamte Tabelle ändern sollen. Es ist nicht möglich, Hintergr<strong>und</strong>jobs<br />

so einzuplanen, dass z. B. der eine die erste Hälfte der<br />

Tabelle aktualisiert <strong>und</strong> der zweite gleichzeitig die andere Hälfte, da<br />

die <strong>Datenbank</strong> nach kurzer Zeit die Tabelle exklusiv für einen der<br />

Jobs sperren wird. Betroffen <strong>von</strong> dieser Einschränkung ist z. B. der<br />

Periodenverschieber in der Materialwirtschaft.<br />

Tabellensperren<br />

Durch <strong>Datenbank</strong>parameter können Sie beeinflussen, wann Einzelsatzsperren<br />

automatisch zu Tabellensperren zusammengefasst werden.<br />

Ganze Tabellen werden auch aus administrativen Gründen gesperrt, z. B.<br />

beim Anlegen <strong>von</strong> Indizes <strong>und</strong> bei bestimmten Tabellen- oder Indexanalysen<br />

der <strong>Datenbank</strong> (z. B. VALIDATE STRUCTURE bei Oracle). Werden diese<br />

Operationen im produktiven Betrieb durchgeführt, können daraus massive<br />

Performanceprobleme resultieren.<br />

9.2.2 SAP-Enqueues<br />

Die SAP-Enqueues werden in der Enqueue-Tabelle verwaltet, die sich<br />

im globalen Hauptspeicher des Enqueue-Servers befindet. Die Workprozesse<br />

des Enqueue-Servers greifen direkt auf die Enqueue-Tabelle<br />

zu, Workprozesse anderer <strong>Applikationsserver</strong> lassen ihre Sperroperationen<br />

vom Enqueue-Workprozess durchführen, wobei sie über den<br />

Message-Service miteinander kommunizieren (1, 2 in Abbildung<br />

9.2). In Abbildung 9.2 werden folgende Abkürzungen verwendet:<br />

DIA: Dialog-Workprozess; ENQ: Enqueue-Workprozess; ENQ-Tab:<br />

Enqueue-Tabelle.<br />

Instanz A (Enqueue-Server)<br />

Instanz B<br />

Message-Server<br />

Dispatcher<br />

Dispatcher<br />

DIA<br />

DIA<br />

DIA<br />

ENQ<br />

DIA<br />

DIA<br />

DIA<br />

ENQ-Tab<br />

Abbildung 9.2 Kommunikation beim Setzen <strong>und</strong> Freigeben <strong>von</strong> SAP-Enqueues<br />

412


Überwachung <strong>von</strong> Sperren 9.2<br />

Das Setzen <strong>und</strong> Freigeben <strong>von</strong> Sperren dauert bei Workprozessen des<br />

Enqueue-Servers weniger als eine Millisek<strong>und</strong>e, bei Workprozessen<br />

anderer <strong>Applikationsserver</strong> weniger als 100 Millisek<strong>und</strong>en.<br />

Wird ein SAP-Enqueue angefordert, der schon <strong>von</strong> einem anderen<br />

Benutzer gehalten wird, wird der Versuch, die Sperre zu setzen,<br />

zurückgewiesen <strong>und</strong> die Kontrolle mit einer entsprechenden Fehlermeldung<br />

an das <strong>ABAP</strong>-Programm zurückgegeben. Es steht nun dem<br />

Anwendungsentwickler frei, diese Fehlermeldung im Programm zu<br />

behandeln. Bei Programmen im Dialogbetrieb wird in der Regel die<br />

entsprechende Fehlermeldung an den Benutzer weitergereicht, z. B.<br />

mit der Nachricht »Material X gesperrt durch Benutzer Y«. In Hintergr<strong>und</strong>programmen<br />

wird dann zu einem späteren Zeitpunkt erneut<br />

versucht, die Sperre zu setzen. Nach einer gewissen Anzahl erfolgloser<br />

Versuche wird eine entsprechende Fehlermeldung in das Protokoll<br />

des Programms geschrieben.<br />

Performanceprobleme<br />

mit<br />

SAP-Enqueues<br />

Performanceprobleme aufgr<strong>und</strong> <strong>von</strong> (zu) lang gehaltenen SAP-<br />

Enqueues ergeben sich aus der Tatsache, dass der Benutzer nach<br />

einem erfolglosen Versuch seine Eingabe wiederholen wird. Nehmen<br />

wir z. B. an, dass er eine Materialliste bearbeiten <strong>und</strong> dazu 100 SAP-<br />

Enqueues setzen müsse. Schlägt der Versuch beim 99. Enqueue fehl<br />

<strong>und</strong> bricht das Programm mit der Meldung »Material Nummer 99 ist<br />

gesperrt« ab, war die gesamte zuvor vom System geleistete Arbeit<br />

vergebens <strong>und</strong> muss wiederholt werden. Fehlgeschlagene Anforderungen<br />

<strong>von</strong> Enqueues führen also zu erhöhter Last auf dem System<br />

<strong>und</strong> begrenzen den Durchsatz <strong>von</strong> Transaktionen.<br />

Eine Übersicht über alle zurzeit aktiven SAP-Enqueues gibt Ihnen<br />

Transaktion SM12 über den Pfad:<br />

Werkzeuge Administration Monitor Sperreinträge<br />

Zur Fehlerdiagnose starten Sie die folgenden Testprogramme:<br />

Zusätze Diagnose bzw. Zusätze Diagnose in VB<br />

Werden Fehler gemeldet, suchen Sie im SAP Service Marketplace der<br />

SAP nach Hinweisen oder wenden sich direkt an SAP.<br />

Über die Menüoption Zusätze Statistik gelangen Sie in eine Statistik<br />

zur Aktivität des Enqueue-Services. Die ersten drei Werte zeigen<br />

die Anzahl der Enqueue-Anforderungen, die Anzahl der erfolglosen<br />

Anforderungen (erfolglos, weil der angeforderte Enqueue bereits<br />

Enqueue-Statistik<br />

413


9<br />

Sperren<br />

anderweitig gehalten wurde) <strong>und</strong> die Anzahl der Fehler bei Enqueue-<br />

Anforderungen. Dabei sollte der Anteil der erfolglosen Anforderungen<br />

nicht mehr als 1 % der gesamten Anforderungen ausmachen.<br />

Fehler sollten überhaupt nicht auftreten.<br />

9.3 Nummernkreispufferung<br />

Bei vielen Datenstrukturen ist es erforderlich, auf die einzelnen<br />

<strong>Datenbank</strong>sätze gezielt zugreifen zu können. Dies wird mit eindeutigen<br />

Schlüsseln realisiert. Nummernkreise dienen dazu, einzelnen<br />

Datensätzen zu einem betriebswirtschaftlichen Objekt Nummern zur<br />

Vervollständigung des Schlüssels zuzuweisen. Solche Nummern sind<br />

z. B. Auftragsnummern oder Materialstammnummern. Mit der SAP-<br />

Nummernkreisverwaltung wird der Nummernstand überwacht,<br />

sodass bereits vergebene Nummern nicht erneut verteilt werden.<br />

9.3.1 Gr<strong>und</strong>lagen<br />

Ein betriebswirtschaftliches Objekt, für das über die Nummernkreise<br />

Teilschlüssel gebildet werden sollen, wird als Nummernkreisobjekt im<br />

SAP-System definiert. Ein Nummernkreis enthält ein Nummernkreisintervall<br />

mit definiertem Zeichenvorrat. Das Nummernkreisintervall<br />

besteht aus Zahlen oder alphanumerischen Zeichen <strong>und</strong><br />

wird begrenzt durch die Felder Von-Nummer <strong>und</strong> Bis-Nummer. Einem<br />

Nummernkreis werden ein oder mehrere Intervalle zugeordnet.<br />

Technische<br />

Realisierung<br />

Der aktuelle Nummernkreisstand eines Nummernkreises, d. h. die<br />

Nummer, die als nächste vergeben wird, wird in der <strong>Datenbank</strong>tabelle<br />

NRIV verwaltet. Benötigt ein Programm eine Nummer (z. B.<br />

aus dem Nummernkreis MATBELEG), führt es die folgenden Schritte<br />

durch:<br />

1. Das Programm liest den aktuellen Nummernkreisstand <strong>von</strong> der<br />

Tabelle NRIV <strong>und</strong> sperrt gleichzeitig den Nummernkreis MATBELEG.<br />

Dazu setzt es eine <strong>Datenbank</strong>sperre mit der SQL-Anweisung<br />

SELECT FOR UPDATE auf die Zeile der Tabelle NRIV, die den Nummernkreis<br />

MATBELEG verwaltet.<br />

414

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!