您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)oracle中undo和redo有什么區(qū)別,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一、undo中數(shù)據(jù)的特點:
1.是數(shù)據(jù)修改前的備份,主要是保證用戶的讀一致性(為了實現(xiàn)這種功能,類似Redo,Oracle用Undo來記錄前備份信息,insert、update、delete的相關(guān)信息記錄在Undo表空間的回滾段內(nèi);記錄的信息量,insert最少只需添加記錄的rowid、update其次記錄所修改的舊值,delete最多記錄所刪除記錄的整行數(shù)據(jù);如一事務(wù)的修改還未提交,另一事務(wù)所查詢的數(shù)值會由Undo信息提供)
2.在事務(wù)修改數(shù)據(jù)時產(chǎn)生
3.至少保存到事務(wù)結(jié)束
二、undo數(shù)據(jù)的作用:
1.回滾(rollback)操作
2.實現(xiàn)讀一致性與閃回查詢
3.從失敗的事務(wù)中還原數(shù)據(jù)
4.非正常停機后的實例恢復(fù)
三、undo回滾段的特點:
1.回滾段是由實例自動創(chuàng)建用于支持事務(wù)運行的專用段,同樣是區(qū)和塊組成,回滾頂會按實際需要自動進行增長或收縮,是一段可以給指定事務(wù)循環(huán)使用的存儲緩沖區(qū)
2.每個事務(wù)只會使用一個回滾段,一個回滾段在同一時刻可能會服務(wù)于多個事務(wù)
3.當(dāng)一個事務(wù)開始的時候,會指定一個回滾段,在事務(wù)進行的過程中,當(dāng)數(shù)據(jù)被修改時,原始的數(shù)據(jù)會被復(fù)制到回滾段
4.在回滾段中,事務(wù)會不斷填充盤區(qū),直到事務(wù)結(jié)束或所有的空間被用完,如果當(dāng)前的盤區(qū)不夠用,事務(wù)會在段中請求擴展下一個盤區(qū),如果所有已分配的盤區(qū)都被用完,事務(wù)會覆蓋最初的盤區(qū)或者在回滾段允許的情況下擴展新的盤區(qū)來使用
5.回滾段存在于undo表空間中,在數(shù)據(jù)庫中可以存在多個undo表空間,但同一時刻只能使用一個undo表空間
四、回滾段中的數(shù)據(jù)類型:
回滾段中的數(shù)據(jù)主要分為以下三種:
1.Uncommitted undo information; 未提交的回滾數(shù)據(jù),該數(shù)據(jù)所關(guān)聯(lián)的事務(wù)并未提交,用于實現(xiàn)讀一致性,所以該數(shù)據(jù)不能被其它事務(wù)的數(shù)據(jù)所覆蓋
2.Committed undo information;已經(jīng)提交但未過期的回滾數(shù)據(jù),該數(shù)據(jù)關(guān)聯(lián)的事務(wù)已經(jīng)提交,但是仍受到undo retention參數(shù)保持時間的影響
3.Expired undo information;事務(wù)已經(jīng)提交,而且數(shù)據(jù)保存時間已經(jīng)超過undo retention參數(shù)指定的時間,屬于已經(jīng)過期的數(shù)據(jù)
當(dāng)回滾段滿了后,會優(yōu)先覆蓋Expired undo information,當(dāng)過期數(shù)據(jù)空間用完后,會再覆蓋Committed undo information的區(qū)域,這時undo retention參數(shù)所規(guī)定的保持時間會被破壞,Uncommitted undo information的數(shù)據(jù)是不允許覆蓋的,如果要求提交的數(shù)據(jù)在undo retention參數(shù)規(guī)定的時間內(nèi)不會被覆蓋,可以在undo表空間上指定RETENTION
GUARANTEE,語法如下:
ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE
五、undo數(shù)據(jù)與redo數(shù)據(jù)的區(qū)別:
1.undo記錄數(shù)據(jù)修改之前的操作,redo記錄磁盤數(shù)據(jù)將要進行的操作
2.undo用于數(shù)據(jù)的回滾操作,和實現(xiàn)一致性讀,redo用于前滾數(shù)據(jù)庫操作
3.undo存儲在回滾段里,redo存儲在重做日志文件里
4.undo用于在多用戶并發(fā)的系統(tǒng)里保證一致性讀,redo用于防止數(shù)據(jù)丟失
六、與undo有關(guān)的相關(guān)參數(shù)
undo_management = auto 自動的undo表空間管理
undo_tablespace = undotbs1 設(shè)置undo表空間的名稱,可以存在多個undo表空間,但同時只能使用一個
undo_retention = 900(秒) 設(shè)置快照保存的最少時間,設(shè)置后在此時間段內(nèi)仍有可能會被覆蓋
ALTER TABLESPACE UNDO_TS RETENTION GUARANTEE; 強制所有快照必須保存 undo_retention所規(guī)定的時間
上述就是小編為大家分享的oracle中undo和redo有什么區(qū)別了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。