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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Ü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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!