1. 程式人生 > >在一個修改了資料的事務被提交之前,Oracle進行了以下操作

在一個修改了資料的事務被提交之前,Oracle進行了以下操作

a) Oracle生成了undo information,undo information包含了事務中各個SQL語句所修改的資料的原始值。
b)Oracle 在SGA的重做日誌緩衝區(redo log buffer) 中生成了重做日誌條目(redo log entry)。重做日誌記錄中包含了對資料塊和回滾塊所進行的修改操作。這些記錄可能在事務提交之前被寫入磁碟。
c)對資料修改已經被寫入SGA中的資料庫緩衝區(database buffer)。這些修改可能在事務提交之前被寫入磁碟。
committed transaction中對資料的修改被儲存在SGA的資料庫緩衝區(database buffer)中,他們不一定立即被後臺程序DBWn寫入資料檔案內。Oracle將選擇適當的時機進行寫操作以保證系統的效率。因此寫操作及可能發生在事務提交之前,也可能在提交之後。
當事務被提交之後,Oracle 進行一下操作:
1 undo 內部的事務表(transaction table)將記錄此次提交,Oracle 為此事務分配一個唯一的系統變化編號(system change number, SCN),並將其記錄在事務表中。
2 The log writer process, LGWR將SGA內重做日誌緩衝區(redo log buffer)中的重做日誌條目(redo log entry) 寫入重做日誌檔案(redo log file)。同時還將此事務的SCN也寫入重做日誌檔案。有以上兩個操作構成的原子事件(atomic event) 標誌著一個事務成功的提交。
3 Oracle 釋放加於表或資料行上的鎖。
4 Oracle將事務標記為完成。註釋:事務與undo是緊密相關的