oracle的undo的作用

2021-09-23 19:40:00 字數 1762 閱讀 3911

undo表空間與redo日誌檔案在oracle中的作用非常重要,重做日誌用於從乙個例項故障或介質故障中恢復資料庫.在應用程式試圖回退(撤消)乙個事務處理時,不使用重做日誌.在這種情況下,oracle將從回退段恢復舊資訊,它還有oracle的另乙個強大的特性---多版本讀取一致性(multi-version read consistency).

undo中資料的特點:

是資料修改前的備份,主要是保證使用者的讀一致性,在事務修改資料時產生

至少儲存到事務結束

undo資料的作用:

回滾(rollback)操作,實現讀一致性與閃回查詢,從失敗的事務中還原資料

, 非正常停機後的例項恢復

undo回滾段的特點:

回滾段是由例項自動建立用於支援事務執行的專用段,同樣是區和塊組成,回滾 段會按實際需要自動進行增長或收縮,是一段可以給指定事務迴圈使用的儲存緩衝區

每個事務只會使用乙個回滾段,乙個回滾段在同一時刻可能會服務於多個事務

當乙個事務開始的時候,會指定乙個回滾段,在事務進行的過程中,當資料被修改時,原始的資料會被複製到回滾段。

在回滾段中,事務會不斷填充盤區,直到事務結束或所有的空間被用完,如果當前的盤區不夠用,事務會在段中請求擴充套件下乙個盤區,如果所有已分配的盤區都被用完,事務會覆蓋最初的盤區或者在回滾段允許的情況下擴充套件新的盤區來使用.

回滾段存在於undo表空間中,在資料庫中可以存在多個undo表空間,但同一時刻只能使用乙個undo表空間。

回滾段中的資料主要分為以下幾種

uncommitted undo information; 未提交的回滾資料,該資料所關聯的事務並未提交,用於實現讀一致性,所以該資料不能被其它事務的資料所覆蓋

committed undo information;已經提交但未過期的回滾資料,該資料關聯的事務已經提交,但是仍受到undo retention引數保持時間的影響

expired undo information;事務已經提交,而且資料儲存時間已經超過undo retention引數指定的時間,屬於已經過期的資料

當回滾段滿了後,會優先覆蓋expired undo information,當過期資料空間用完後,會再覆蓋committed undo information的區域,這時undo retention引數所規定的保持時間會被破壞,uncommitted undo information的資料是不允許覆蓋的,如果要求提交的資料在undo retention引數規定的時間內不會被覆蓋,可以在undo表空間上指定retention guarantee,語法如下:

alter tablespace undotbs1 retention guarantee;

undo資料與redo資料的區別:

undo記錄資料修改之前的操作,redo記錄磁碟資料將要進行的操作.

undo用於資料的回滾操作,和實現一致性讀,redo用於前滾資料庫操作

undo儲存在回滾段裡,redo儲存在重做日誌檔案裡

undo用於在多使用者併發的系統裡保證一致性讀,redo用於防止資料丟失

與undo有關的相關引數

undo_management = auto 自動的undo表空間管理

undo_tablespace = undotbs1 設定undo表空間的名稱,可以存在多個undo表空間,但同時只能使用乙個

undo_retention = 1800(秒) 設定快照儲存的最少時間,設定後在此時間段內仍有可能會被覆蓋

alter tablespace undo_ts retention guarantee; 強制所有快照必須儲存 undo_retention所規定的時間。

Oracle中redo與undo的作用對比講解

一.什麼是redo 用於重做資料 redo也就是重做日誌檔案 redo log file oracle維護著兩類重做日誌檔案 online 重做日誌檔案和歸檔 archived 重做日誌檔案。這兩類重做日誌檔案都用於恢復 其主要目的是,萬一例項失敗或介質失敗,它們能夠恢復資料。由於資料庫緩衝,對磁碟...

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

undo資料段的作用 事務回滾 transaction rollback 程式執行rollback操作。事務修復 transaction recovery rollback是recovery的一部分。讀取一致 read consistency 根據scn system change number 來...

描述undo的三個作用

1 rollback 1 乙個事務開始,生成乙個事務 id 找事務 counter 2 讀取系統事務表,找到乙個回滾段 找相對空閒的 讀取回滾段的段頭塊 段頭裡面有很多行,找到其中空閒的行,把事務id寫進去,寫進去之後乙個事務就開始了,乙個事務槽盛放乙個事務 id,也就是說乙個事務開始了需要找到事務...