2 Analyse von Hardware, Datenbank und ABAP-Applikationsserver
2 Analyse von Hardware, Datenbank und ABAP-Applikationsserver
2 Analyse von Hardware, Datenbank und ABAP-Applikationsserver
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