Anfang des InhaltsbereichsMögliche Sperrkonflikte Dokument im Navigationsbaum lokalisieren

Falls das R/3-System das Datenbanksystem DB2 für OS/390 verwendet, müssen auch bei Nur-Lese-Operationen regelmäßig Commits ausgeführt werden, und zwar mindestens einmal pro Minute, um zwischenzeitlich angesammelte Sperren auf der Datenbank freizugeben.

Sperren werden hier nämlich nicht nur bei ändernden Transaktionen, sondern auch beim konsistenten Lesen von gepufferten Tabellen, Cluster- und Pool-Tabellen gesetzt. Im Datenbanksystem wird hierzu der Isolation Level "Read Stability" verwendet, welcher mit Hilfe von sogenannten "Shared Locks" die gleichzeitige Änderung von Tabelleninhalten verhindert.

Sperrkonflikte können neben Timeouts und Deadlocks auch Fehler bei DDL (Data Definition Language) Anweisungen wie CREATE, ALTER und DROP verursachen sowie die Geschwindigkeit der Online Reorganisation verlangsamen.

Sollte es erforderlich sein, die Position eines Cursors auch über den Commit-Zeitpunkt hinaus beizubehalten, kann die Option WITH HOLD der Anweisung OPEN CURSOR verwendet werden.

Die Commits sollten als Datenbank-Commits ausgeführt werden. Hierfür kann wie folgt Native SQL verwendet werden:

IF sy-dbsys = 'DB2'.
  EXEC SQL.
    COMMIT WORK
  ENDEXEC.
ENDIF.

Es empfiehlt sich, solche Datenbank-Commits in alle Programme mit langen Lese-Operationen einzubauen.

Ende des Inhaltsbereichs