新聞中心
學(xué)習(xí)Oracle時(shí),你可能會(huì)遇到Oracle使用UNDO表空間問(wèn)題,這里將介紹Oracle使用UNDO表空間問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。UNDO表空間用于存放UNDO數(shù)據(jù),當(dāng)執(zhí)行DML操作(INSERT,UPDATE和DELETE)時(shí),Oracle會(huì)將這些操作的舊數(shù)據(jù)寫(xiě)入到UNDO段,在Oracle9i之前,管理UNDO數(shù)據(jù)時(shí)使用(Rollback Segment)完成的。從Oracle9i開(kāi)始,管理UNDO數(shù)據(jù)不僅可以使用回滾段,還可以O(shè)racle使用UNDO表空間。因?yàn)橐?guī)劃和管理回滾段比較復(fù)雜,所有Oracle database 10g已經(jīng)完全丟棄用回滾段。并且Oracle使用UNDO表空間來(lái)管理UNDO數(shù)據(jù)。

創(chuàng)新互聯(lián)專注于周寧企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站制作。周寧網(wǎng)站建設(shè)公司,為周寧等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
UNDO數(shù)據(jù)也稱為回滾(ROLLBACK)數(shù)據(jù),它用于確保數(shù)據(jù)的一致性。當(dāng)執(zhí)行DML操作時(shí),事務(wù)操作前的數(shù)據(jù)被稱為UNDO記錄。UNDO段用于保存事務(wù)所修改數(shù)據(jù)的舊值,其中存儲(chǔ)著被修改數(shù)據(jù)塊的位置以及修改前數(shù)據(jù),
UNDO數(shù)據(jù)的作用。
1?;赝耸聞?wù)
當(dāng)執(zhí)行DML操作修改數(shù)據(jù)時(shí),UNDO數(shù)據(jù)被存放到UNDO段,而新數(shù)據(jù)則被存放到數(shù)據(jù)段中,如果事務(wù)操作存在問(wèn)題,舊需要回退事務(wù),以取消事務(wù)變化。假定用戶A執(zhí)行了語(yǔ)句UPDATE emp SET sal=1000 WHERE empno=7788后發(fā)現(xiàn),應(yīng)該修改雇員7963的工資,而不是雇員7788的工資,那么通過(guò)執(zhí)行ROLLBACK語(yǔ)句可以取消事務(wù)變化。當(dāng)執(zhí)行ROLLBACK命令時(shí),Oracle會(huì)將UNDO段的UNDO數(shù)據(jù)800寫(xiě)回的數(shù)據(jù)段中。
2。讀一致性
用戶檢索數(shù)據(jù)庫(kù)數(shù)據(jù)時(shí),Oracle總是使用用戶只能看到被提交過(guò)的數(shù)據(jù)(讀取提交)或特定時(shí)間點(diǎn)的數(shù)據(jù)(SELECT語(yǔ)句時(shí)間點(diǎn))。這樣可以確保數(shù)據(jù)的一致性。例如,當(dāng)用戶A執(zhí)行語(yǔ)句UPDATE emp SET sal=1000 WHERE empno=7788時(shí),UNDO記錄會(huì)被存放到回滾段中,而新數(shù)據(jù)則會(huì)存放到EMP段中;假定此時(shí)該數(shù)據(jù)尚未提交,并且用戶B執(zhí)行SELECT sal FROM emp WHERE empno=7788,此時(shí)用戶B將取得UNDO數(shù)據(jù)800,而該數(shù)據(jù)正是在UNDO記錄中取得的。
3。事務(wù)恢復(fù)
事務(wù)恢復(fù)是例程恢復(fù)的一部分,它是由Oracle server自動(dòng)完成的。如果在數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中出現(xiàn)例程失敗(如斷電,內(nèi)存故障,后臺(tái)進(jìn)程故障等),那么當(dāng)重啟Oracle server時(shí),后臺(tái)進(jìn)程SMON會(huì)自動(dòng)執(zhí)行例程恢復(fù),執(zhí)行例程恢復(fù)時(shí),oracl會(huì)重新做所有未應(yīng)用的記錄?;赝宋刺峤皇聞?wù)。
4。倒敘查詢(FlashBack Query)
倒敘查詢用于取得特定時(shí)間點(diǎn)的數(shù)據(jù)庫(kù)數(shù)據(jù),它是9i新增加的特性,假定當(dāng)前時(shí)間為上午11:00,某用戶在上午10:00執(zhí)行UPDATE emp SET sal=3500 WHERE empno=7788語(yǔ)句,修改并提交了事務(wù)(雇員原工資為3000),為了取得10:00之前的雇員工資,用戶可以使用倒敘查詢特征。
使用UNDO參數(shù)
1。UNDO_MANAGEMENT
該初始化參數(shù)用于指定UNDO數(shù)據(jù)的管理方式。如果要使用自動(dòng)管理模式,必須設(shè)置該參數(shù)為AUTO,如果使用手工管理模式,必須設(shè)置該參數(shù)為MANUAL,使用自動(dòng)管理模式時(shí),Oracle使用UNDO表空間管理undo管理,使用手工管理模式時(shí),Oracle會(huì)使用回滾段管理undo數(shù)據(jù),需要注意,使用自動(dòng)管理模式時(shí),如果沒(méi)有配置初始化參數(shù)UNDO_TABLESPACE。Oracle會(huì)自動(dòng)選擇第一個(gè)可用的UNDO表空間存放UNDO數(shù)據(jù),如果沒(méi)有可用的UNDO表空間,Oracle會(huì)使用SYSTEM回滾段存放UNDO記錄,并在ALTER文件中記載警告。
2。UNDO_TABLESPACE
該初始化參數(shù)用于指定例程所要使用的UNDO表空間,使用自動(dòng)UNDO管理模式時(shí),通過(guò)配置該參數(shù)可以指定例程所要使用UNDO表空間。在RAC(Real Application Cluster)結(jié)構(gòu)中,因?yàn)橐粋€(gè)UNDO表空間不能由多個(gè)例程同時(shí)使用,所有必須為每個(gè)例程配置一個(gè)獨(dú)立的UNDO表空間。
3。UNDO_RETENTION
該初始化參數(shù)用于控制UNDO數(shù)據(jù)的最大保留時(shí)間,其默認(rèn)值為900秒,從9i開(kāi)始,通過(guò)配置該初始化參數(shù),可以指定undo數(shù)據(jù)的保留時(shí)間,從而確定倒敘查詢特征(Flashback Query)可以查看到的最早時(shí)間點(diǎn)。
【編輯推薦】
- Oracle表空間恢復(fù)讓你不再擔(dān)心數(shù)據(jù)庫(kù)出現(xiàn)錯(cuò)誤
- 簡(jiǎn)單談?wù)揤B.NET傳輸表空間
- 講述Oracle UNDO表空間重建方法
- 五分鐘精通Oracle表空間
- Oracle用戶表空間兩步精通
分享文章:講解Oracle使用UNDO表空間
本文路徑:http://www.fisionsoft.com.cn/article/cdossgi.html


咨詢
建站咨詢
