程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 講解Oracle使用UNDO表空間

講解Oracle使用UNDO表空間

編輯:Oracle數據庫基礎

學習Oracle時,你可能會遇到Oracle使用UNDO表空間問題,這裡將介紹Oracle使用UNDO表空間問題的解決方法,在這裡拿出來和大家分享一下。UNDO表空間用於存放UNDO數據,當執行DML操作(INSERT,UPDATE和DELETE)時,Oracle會將這些操作的舊數據寫入到UNDO段,在Oracle9i之前,管理UNDO數據時使用(Rollback Segment)完成的。從Oracle9i開始,管理UNDO數據不僅可以使用回滾段,還可以Oracle使用UNDO表空間。因為規劃和管理回滾段比較復雜,所有Oracle database 10g已經完全丟棄用回滾段。並且Oracle使用UNDO表空間來管理UNDO數據。

UNDO數據也稱為回滾(ROLLBACK)數據,它用於確保數據的一致性。當執行DML操作時,事務操作前的數據被稱為UNDO記錄。UNDO段用於保存事務所修改數據的舊值,其中存儲著被修改數據塊的位置以及修改前數據,

UNDO數據的作用。

1。回退事務
當執行DML操作修改數據時,UNDO數據被存放到UNDO段,而新數據則被存放到數據段中,如果事務操作存在問題,舊需要回退事務,以取消事務變化。假定用戶A執行了語句UPDATE emp SET sal=1000 WHERE empno=7788後發現,應該修改雇員7963的工資,而不是雇員7788的工資,那麼通過執行ROLLBACK語句可以取消事務變化。當執行ROLLBACK命令時,Oracle會將UNDO段的UNDO數據800寫回的數據段中。

2。讀一致性
用戶檢索數據庫數據時,Oracle總是使用用戶只能看到被提交過的數據(讀取提交)或特定時間點的數據(SELECT語句時間點)。這樣可以確保數據的一致性。例如,當用戶A執行語句UPDATE emp SET sal=1000 WHERE empno=7788時,UNDO記錄會被存放到回滾段中,而新數據則會存放到EMP段中;假定此時該數據尚未提交,並且用戶B執行SELECT sal FROM emp WHERE empno=7788,此時用戶B將取得UNDO數據800,而該數據正是在UNDO記錄中取得的。

3。事務恢復
事務恢復是例程恢復的一部分,它是由Oracle server自動完成的。如果在數據庫運行過程中出現例程失敗(如斷電,內存故障,後台進程故障等),那麼當重啟Oracle server時,後台進程SMON會自動執行例程恢復,執行例程恢復時,oracl會重新做所有未應用的記錄。回退未提交事務。

4。倒敘查詢(FlashBack Query)
倒敘查詢用於取得特定時間點的數據庫數據,它是9i新增加的特性,假定當前時間為上午11:00,某用戶在上午10:00執行UPDATE emp SET sal=3500 WHERE empno=7788語句,修改並提交了事務(雇員原工資為3000),為了取得10:00之前的雇員工資,用戶可以使用倒敘查詢特征。

使用UNDO參數

1。UNDO_MANAGEMENT
該初始化參數用於指定UNDO數據的管理方式。如果要使用自動管理模式,必須設置該參數為AUTO,如果使用手工管理模式,必須設置該參數為MANUAL,使用自動管理模式時,Oracle使用UNDO表空間管理undo管理,使用手工管理模式時,Oracle會使用回滾段管理undo數據,需要注意,使用自動管理模式時,如果沒有配置初始化參數UNDO_TABLESPACE。Oracle會自動選擇第一個可用的UNDO表空間存放UNDO數據,如果沒有可用的UNDO表空間,Oracle會使用SYSTEM回滾段存放UNDO記錄,並在ALTER文件中記載警告。

2。UNDO_TABLESPACE
該初始化參數用於指定例程所要使用的UNDO表空間,使用自動UNDO管理模式時,通過配置該參數可以指定例程所要使用UNDO表空間。在RAC(Real Application Cluster)結構中,因為一個UNDO表空間不能由多個例程同時使用,所有必須為每個例程配置一個獨立的UNDO表空間。

3。UNDO_RETENTION
該初始化參數用於控制UNDO數據的最大保留時間,其默認值為900秒,從9i開始,通過配置該初始化參數,可以指定undo數據的保留時間,從而確定倒敘查詢特征(Flashback Query)可以查看到的最早時間點。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved