私は DBA ではないので、Oracle のトランザクション管理プロセスを理解するのに少し苦労しています。
インターネット上の信頼できるように見えるページを読んで理解したところ (最も顕著なのはこのAskTom ノートですが、コメントは気にしないでください)、トランザクションがコミットされたとき、新しいデータは実際のデータ ブロックでまだ報告されていません。が、ロールバック セグメントに記録されたままになります。誰かがデータに対して SELECT を発行したとき、または UNDO_RETENTION 秒が経過したとき (これら 2 つのイベントのいずれかが最初に発生した方)、新しいデータがデータ ブロックに書き込まれます。
しかし、おそらく知っていると思われる当社の誰かが最近私に反対のことを言いました. UNDO_RETENTION 秒の期間。この古いデータは、トランザクションの前に SCN で起動されたクエリによるアクセスのために、この間利用可能のままです。
では、オラクル内部で実際に何が起こっているのでしょうか?回答をバックアップするための参照を提供できますか?
Oracle 9.2.0.8 を使用しています。
前もって感謝します。