Um sie leichter wiederzufinden, verlinke ich hier eine Liste der Artikel, die Frits Hoogland in seiner Serie "A look into Oracle redo" veröffentlicht. Vermutlich werde ich hier wenig Inhaltliches ergänzen, da sich diese Artikel nur schwer exzerpieren lassen: sie enthalten einfach zu viele interessante technische Details:
- A look into Oracle redo, part 1: redo allocation latches: der log buffer enthält mindestens zwei public redo strands, die über x$kcrfstrand dargestellt werden. Die Anzahl wird über den internen Parameter _log_parallelism_max gesteuert: Systeme mit einer höheren CPU-Anzahl könnten unter Umständen von einer Erhöhung des Wertes profitieren. Jeder Strand wird von einem "redo allocation latch" geschützt. Neben den public strands gibt es private strands, die ebenfalls von solchen Latches geschützt werden (so dass statt 2 insgesamt 20 Latches sichtbar sind). Es folgt eine intensivere Untersuchung der latch Verwendung unter Verwendung elaborierterer Tools. Sichtbar wird, dass im Fall einer Verwendung aller vorhandenen Latches eine folgende Anforderung zunächst ein spinning im willing to wait Modus durchführt und anschließend in den sleep Modus mit semaphore (über den eine Benachrichtigung erfolgt, wenn das Latch wieder verfügbar wird) übergeht (was Andrey Nikolaev, den ich hier auch gelegentlich irgendwo verlinkt habe, umfassend dargestellt hat). Um den Zusammenhang von redo allocation latch und verwendetem public strand zu bestimmen, muss man aber noch tiefer graben und die memory Nutzung des Prozesses untersuchen. Hier wird dann erläutert, welche Funktion im einzelnen intern aufgerufen werden, aber spätestens hier ist die Nacherzählung nicht mehr hilfreich.
- A look into Oracle redo, part 2: the discovery of the KCRFA structure: geht noch tiefer in die technischen Details der Implementierung und den Aufbau der zugehörigen Memory-Strukturen ein, was ebenso interessant wie schwer exzerpierbar ist.
- A look into Oracle redo, part 3: log writer work cycle overview: beschäftigt sich mit dem Log Writer und seinen Aufgaben. Dazu ist die Dokumentation offenbar nicht allzu ausführlich. Gut sichtbar ist, dass der Log Writer in den log buffer schreibt, was über das Wait Event "log file parallel write" abgebildet wird, und dass seine sleeps über das Event "rdbms ipc message" ausgewiesen werden. Mit debugtrace kann man die zugrunde liegenden Aufrufe, die Integration der Instrumentierung und den Zyklus der Operationen des Prozesses erkennen.
- A look into Oracle redo, part 4: the log writer null write
- A look into Oracle redo, part 5: the log writer writing
- A look into Oracle redo, part 6: oracle post-wait commit and the on disk SCN
- A look into oracle redo, part 7: adaptive log file sync
- A look into oracle redo, part 8: generate redo
- A look into oracle redo, part 9: commit
- A look into oracle redo, part 10: commit_wait and commit_logging
Hoffentlich liefere ich gelegentlich ein paar Sätze zu den unkommentierten Artikeln nach, aber leider schreibt der Herr Hogland deutlich schneller, als ich exzerpieren kann...
Keine Kommentare:
Kommentar veröffentlichen