Oracle Datenbank-Tuning - Der Buffer Cache

Server-Prozesse der Benutzer

Wenn der Server-Prozess eines Benutzers die Daten im Buffer Cache nicht vorfindet, dann liest er die Datenblöcke von der Festplatte und schreibt sie in den Buffer Cache.

Bevor die Blöcke von der Platte gelesen werden können, müssen freie Blöcke im Buffer Cache gefunden werden. Der Server-Prozess sucht einen freien Block unter Benutzung der LRU-Liste und der Dirty-Liste in der folgenden Art und Weise:

  • Während der Server-Prozess die LRU-Liste nach freien Blöcken durchsucht, werden alle Dirty Buffer in die Dirty-Liste verschoben.

  • Die Dirty-Liste wird dadurch immer größer. Wenn der Schwellenwert erreicht wird, schreibt der Database Writer Dirty Buffer auf die Festplatte.

  • Der Database Writer kann auch dann Dirty Buffer auf die Festplatte schreiben, wenn der Schwellenwert noch nicht erreicht ist. Das passiert dann, wenn der Server-Prozess zu viele Buffer untersucht hat, ohne einen freien zu finden. In diesem Fall schreibt DWBn Dirty Buffer direkt von der LRU-Liste auf die Platte.

Wenn ein Server-Prozess einen Buffer im Cache findet, kann dieser Daten enthalten, die nicht durch ein COMMIT abgeschlossen wurden. Oracle gestattet jedoch nicht, dass ein anderer Benutzer diese Daten sieht. Die Dateninhalte vor der Änderung befinden sich im Rollback- oder Undo-Segment. Diese Segmente werden auch im Buffer Cache gespeichert.