2013-02-10 11 views
6

Angenommen, eine Aktualisierung wird über eine Transaktion durchgeführt, und dann wird eine Commit-Anweisung ausgegeben.Was passiert unter der Haube, wenn eine Commit-Anweisung in Oracle 10g ausgegeben wird?

Welche sind die internen Prozesse, die in einem Oracle-Server nach einer Commit-Anweisung passieren?

+1

Dies ist eine zu weit gefasste Frage. Willkommen in SO aber nicht enttäuscht werden, wenn es geschlossen wird. Sie können versuchen, es umzuformulieren, zu verdeutlichen und ein wenig einzuschränken. –

Antwort

5
  1. SCN (System Change Number) erhöht wird: SCN garantiert die Reihenfolge der Transaktionen
  2. LGWR (Log Writer) schreibt verbleibende Redo-Log auf die Festplatte
  3. LGWR schreibt SCN in die Online-Redo-Log-Dateien
  4. Transaktion wird von V $ TRANSACTION entfernt
  5. Sperren der aktuellen Sitzung freigegeben werden, entfernt von V $ LOCK
  6. Andere Sitzungen für die Schlösser der aktuellen Sitzung warten benachrichtigt werden
  7. reinigen
  8. blockierte passieren kann: Lock-bezogenen Informationen aus den Block-Header der Blöcke gereinigt von der Transaktion geändert
+1

Was ist die Nummer 7? Ich habe noch nie davon gehört. – Plouf

+0

Die von unserer Transaktion geänderten Blöcke werden in einem schnellen Modus aus dem Puffer-Cache bereinigt. Diese Bereinigung betrifft die Sperrinformationen, die im Blockkopf gespeichert sind. Ich werde die Antwort mit dieser Info ändern, danke für den Kommentar. –

+2

Punktepaare: Das SCN muss zu Beginn der Transaktion generiert werden, da es für Konsistenzzwecke und zur Kennzeichnung von Änderungen verwendet wird. Auch "LGWR (Log Writer) schreibt Redo-Log auf Festplatte" könnte bereits abgeschlossen sein. Was den Protokollschreiber betrifft, ist die einzige Aktion, die als Teil eines Commits abgeschlossen werden muss, dass der Übergabedatensatz für den Transaktions-SCN in die Redolog-Datei geschrieben wird. "Block clean out" ist auch nicht zwingend –

Verwandte Themen