這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)oracle中undo和redo有什么區(qū)別,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
目前成都創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、德保網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
一、undo中數(shù)據(jù)的特點(diǎn):
1.是數(shù)據(jù)修改前的備份,主要是保證用戶的讀一致性(為了實(shí)現(xiàn)這種功能,類似Redo,Oracle用Undo來記錄前備份信息,insert、update、delete的相關(guān)信息記錄在Undo表空間的回滾段內(nèi);記錄的信息量,insert最少只需添加記錄的rowid、update其次記錄所修改的舊值,delete最多記錄所刪除記錄的整行數(shù)據(jù);如一事務(wù)的修改還未提交,另一事務(wù)所查詢的數(shù)值會(huì)由Undo信息提供)
2.在事務(wù)修改數(shù)據(jù)時(shí)產(chǎn)生
3.至少保存到事務(wù)結(jié)束
二、undo數(shù)據(jù)的作用:
1.回滾(rollback)操作
2.實(shí)現(xiàn)讀一致性與閃回查詢
3.從失敗的事務(wù)中還原數(shù)據(jù)
4.非正常停機(jī)后的實(shí)例恢復(fù)
三、undo回滾段的特點(diǎn):
1.回滾段是由實(shí)例自動(dòng)創(chuàng)建用于支持事務(wù)運(yùn)行的專用段,同樣是區(qū)和塊組成,回滾頂會(huì)按實(shí)際需要自動(dòng)進(jìn)行增長或收縮,是一段可以給指定事務(wù)循環(huán)使用的存儲(chǔ)緩沖區(qū)
2.每個(gè)事務(wù)只會(huì)使用一個(gè)回滾段,一個(gè)回滾段在同一時(shí)刻可能會(huì)服務(wù)于多個(gè)事務(wù)
3.當(dāng)一個(gè)事務(wù)開始的時(shí)候,會(huì)指定一個(gè)回滾段,在事務(wù)進(jìn)行的過程中,當(dāng)數(shù)據(jù)被修改時(shí),原始的數(shù)據(jù)會(huì)被復(fù)制到回滾段
4.在回滾段中,事務(wù)會(huì)不斷填充盤區(qū),直到事務(wù)結(jié)束或所有的空間被用完,如果當(dāng)前的盤區(qū)不夠用,事務(wù)會(huì)在段中請求擴(kuò)展下一個(gè)盤區(qū),如果所有已分配的盤區(qū)都被用完,事務(wù)會(huì)覆蓋最初的盤區(qū)或者在回滾段允許的情況下擴(kuò)展新的盤區(qū)來使用
5.回滾段存在于undo表空間中,在數(shù)據(jù)庫中可以存在多個(gè)undo表空間,但同一時(shí)刻只能使用一個(gè)undo表空間
四、回滾段中的數(shù)據(jù)類型:
回滾段中的數(shù)據(jù)主要分為以下三種:
1.Uncommitted undo information; 未提交的回滾數(shù)據(jù),該數(shù)據(jù)所關(guān)聯(lián)的事務(wù)并未提交,用于實(shí)現(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ù)保持時(shí)間的影響
3.Expired undo information;事務(wù)已經(jīng)提交,而且數(shù)據(jù)保存時(shí)間已經(jīng)超過undo retention參數(shù)指定的時(shí)間,屬于已經(jīng)過期的數(shù)據(jù)
當(dāng)回滾段滿了后,會(huì)優(yōu)先覆蓋Expired undo information,當(dāng)過期數(shù)據(jù)空間用完后,會(huì)再覆蓋Committed undo information的區(qū)域,這時(shí)undo retention參數(shù)所規(guī)定的保持時(shí)間會(huì)被破壞,Uncommitted undo information的數(shù)據(jù)是不允許覆蓋的,如果要求提交的數(shù)據(jù)在undo retention參數(shù)規(guī)定的時(shí)間內(nèi)不會(huì)被覆蓋,可以在undo表空間上指定RETENTION
GUARANTEE,語法如下:
ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE
五、undo數(shù)據(jù)與redo數(shù)據(jù)的區(qū)別:
1.undo記錄數(shù)據(jù)修改之前的操作,redo記錄磁盤數(shù)據(jù)將要進(jìn)行的操作
2.undo用于數(shù)據(jù)的回滾操作,和實(shí)現(xiàn)一致性讀,redo用于前滾數(shù)據(jù)庫操作
3.undo存儲(chǔ)在回滾段里,redo存儲(chǔ)在重做日志文件里
4.undo用于在多用戶并發(fā)的系統(tǒng)里保證一致性讀,redo用于防止數(shù)據(jù)丟失
六、與undo有關(guān)的相關(guān)參數(shù)
undo_management = auto 自動(dòng)的undo表空間管理
undo_tablespace = undotbs1 設(shè)置undo表空間的名稱,可以存在多個(gè)undo表空間,但同時(shí)只能使用一個(gè)
undo_retention = 900(秒) 設(shè)置快照保存的最少時(shí)間,設(shè)置后在此時(shí)間段內(nèi)仍有可能會(huì)被覆蓋
ALTER TABLESPACE UNDO_TS RETENTION GUARANTEE; 強(qiáng)制所有快照必須保存 undo_retention所規(guī)定的時(shí)間
上述就是小編為大家分享的oracle中undo和redo有什么區(qū)別了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。