undo資料段的作用:
事務回滾(transaction rollback):程式執行rollback操作。
事務修復(transaction recovery):rollback是recovery的一部分。
讀取一致(read consistency):根據scn(system change number)來保證讀取資料的一致性。
undo資料段的型別:
system,用於system表空間中的物件。
non-system,用於其它表空間中的物件。
deferred,當表空間離線時使用,系統自動管理。
自動undo管理:
為每個例項分配乙個undo表空間,oracle
伺服器自動維護undo資料。
初始化引數:
undo_management=auto
undo_tablespace=undotbs
[oracle@redhatoracle dbs]$ cat spfiletest.ora
*.undo_management='auto'
*.undo_retention=10800 //為保證讀取一致保留原始資料多長時間(秒)
*.undo_tablespace='undotbs1'
建立undo表空間:
sql> create database db01
undo tablespace undo01 datafile 'undo01.dbf' size 20m autoextend on
sql> create undo tablespace undo01 datafile 'undo01.dbf' size 20m;
關於Oracle資料庫中的undo回滾段
oracle資料庫當中,關於日誌與回滾那一部分,與別的資料庫確實有很大的不同。為了避免在寫日誌的同時後台程序對日誌檔案的讀操作,oracle使用了單獨的回滾段來記錄 舊 的資料。這樣可以達到並行讀寫的目的,整體i o效率提高了不少,但也引入了一些問題。最經典的莫過於ora 01555 snapsho...
oracle資料庫undo例項崩潰的問題
最近有人跟我提出乙個看似很刁鑽古怪的問題,問題是這樣的 假設事務a修改了乙個資料塊b,b變成髒資料塊b,但是沒有提交,又因為髒資料塊寫入磁碟不受事務提交的影響,所以現在的情況是這樣的 髒資料塊b被寫入磁碟,但是undo表空間儲存的的b修改前的資料還沒有寫入磁碟 現在出現了例項崩潰 那麼要恢復資料庫例...
資料庫undo和redo
undo和redo是沒有關係的,不能相互取代,對於資料庫來說,只有有沒有undo 和有沒有redo的區別,不是有了undo就不能有redo,或者有了redo就不能有undo。到底用不用redo和undo是和steal no steal force no force策略相關的。你肯定是沒搞明白這四個策...