Oracle資料庫中Undo資料段的作用及型別

2021-04-17 01:34:15 字數 895 閱讀 6054

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策略相關的。你肯定是沒搞明白這四個策...