Oracle - Wie funktioniert Transaktion Rollback-Segment und die UNDO_RETENTION Parameter Arbeit?

StackOverflow https://stackoverflow.com/questions/190693

  •  07-07-2019
  •  | 
  •  

Frage

Ich bin kein DBA, und ich bin ein bisschen eine harte Zeit zu verstehen Oracle-Transaktionsmanagement-Prozess mit.

Von dem, was ich verstand, indem sie einige zuverlässigen aussehenden Seiten im Internet zu lesen (vor allem das AskTom beachten - aber mit den Kommentaren) nicht stören, wenn eine Transaktion verpflichtet ist, die neuen Daten nicht berichtet auf dem tatsächlichen Datenblock noch nicht, aber bleibt auf dem Rollback-Segment protokolliert. Wenn jemand eine SELECT auf die Daten ausgibt, oder wenn UNDO_RETENTION Sekunden vergangen sind - je nachdem, welche dieser beiden Ereignisse zuerst passiert -., Die neuen Daten dann (und nur dann) auf die Datenblöcke geschrieben

Aber jemand in unserer Gesellschaft, die angeblich in der wissen, sagte mir vor kurzem das Gegenteil: nach ihm, wenn eine Transaktion verpflichtet ist, werden die neuen Daten ist sofort auf die Datenblöcke geschrieben, und die Rollback-Segment / Undo Tabellen die alten Daten für eine Dauer von UNDO_RETENTION Sekunden halten. Diese alten Daten bleiben während dieser Zeit für den Zugriff durch Abfragen gestartet auf SCNs vor der Transaktion zur Verfügung.

Also, was wirklich passiert im Inneren Oracle, und können Sie Referenzen geben Sie Ihre Antwort zu sichern?

Wir verwenden Oracle 9.2.0.8.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Es gibt viel zu decken hier! Die Person in Ihrem Unternehmen ist im Wesentlichen richtig, mit der Ausnahme, dass die Änderungen in die Datenbaustein geschrieben werden im Speicher , wie sie gemacht werden, noch bevor die begehen; und sie werden auf der Festplatte geschrieben völlig unabhängig davon, wann Sie begehen (möglicherweise vor, möglicherweise nach, nie als Teil der Festschreibungsoperation).

1) UNDO_RETENTION hat nichts mit dem zu tun, wenn Sie Ihren Änderungen an den Datenblock geschrieben werden, entweder im internen Speicher oder auf der Festplatte. UNDO_RETENTION steuert, wie lange die Daten erforderlich, um die Änderung rückgängig zu machen, weiterhin bestehen, nachdem Sie die Änderung zu übernehmen. Der Zweck ist, dass andere Abfragen oder serializable Transaktionen, die gestartet, bevor Sie verpflichten immer noch, dass Daten möchten. Referenz: http://download.oracle.com /docs/cd/B19306_01/server.102/b14231/undo.htm#sthref1477

2) Wenn Sie ein Update zu tun, werden die Datenblöcke im Speicher modifiziert. können Sie oder können nicht auf die Festplatte geschrieben werden (noch bevor Sie zu begehen, glaube ich); Dies wird durch einen Hintergrundprozess durchgeführt. Auch Redo-Informationen an den Redo-Log-Puffer geschrieben werden. Undo wird erzeugt und in einem Undo-Segment gespeichert.

3) Wenn Sie sich verpflichten, macht Oracle sicher, dass Ihre Redo-Informationen auf die Festplatte geschrieben wird, und markiert die Daten Undo als verpflichtet. Aber es ist nicht die geänderten Datenblöcke im Speicher auf die Festplatte schreiben, noch nicht zurückgehen und jeden Block zu markieren, wie verpflichtet. Dies ist auf die so schnell wie möglich machen zu begehen. Referenz: http://download.oracle.com /docs/cd/B19306_01/server.102/b14220/transact.htm#sthref628

4) Die Datenblocks im Speicher markiert als begangen werden, entweder wenn sie durch den Hintergrundprozess auf der Festplatte geschrieben, oder das nächste Mal, wenn sie (durch eine SELECT oder jede andere Operation verwendet werden). Das ist, was die AskTom Notiz diskutiert. Es geht nicht darum, ob Ihre Änderungen an Daten in den Block geschrieben; es geht darum, ob sie markiert sind, wie im Block selbst begangen hat.

Andere Tipps

Mein Verständnis ist (im Grunde) die später

Ich wähle auch für die zweite Version basiert auf
Diese
Link (die Oracle 10.2, aber ich denke, es ist immer noch auf 9,2 gilt auch).

Dort heißt es: „Nach einer Transaktion festgeschrieben wird, rückgängig gemacht werden Daten nicht mehr benötigt werden für eine Rollback oder Transaktion Recovery-Zwecke. Doch für konsistente Lese Zwecke, lang laufenden Abfragen dieses alten Informationen rückgängig machen erfordern ältere Bilder von Datenblöcken zu erzeugen.“

und

„Wenn die automatische Undo-Management aktiviert ist, gibt es immer eine aktuelle Undo Aufbewahrungsfrist, die die minimale Menge an Zeit ist, dass Oracle Database versucht alte zu behalten Informationen rückgängig machen, bevor sie überschrieben werden.“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top