16 Managing Undo 官網:http://docs.oracle.com/cd/E11882_01/server.112/e25494/undo.htm#ADMIN013 從Oracle11g開始,在預設安裝中oracle會自動管理undo, 典型安裝中不需要DBA介入配置,然而,如果選 ...
官網:http://docs.oracle.com/cd/E11882_01/server.112/e25494/undo.htm#ADMIN013
從Oracle11g開始,在預設安裝中oracle會自動管理undo, 典型安裝中不需要DBA介入配置,然而,如果選擇了flash back特性,你就需要進行一些undo管理任務,來保證flashback特性的成功執行。 本章包含如下內容:
- 什麼是undo
- 自動undo管理介紹
- 設置最小undo保留時間
- 設置固定大小的undo表空間
- 管理undo表空間
- 遷 移到自動undo段管理
- undo空間數據字典視圖
See Also:
Chapter 17, "Using Oracle Managed Files"查看如何創建由Oracle資料庫創建並管理數據文件的undo表空間
什麼是UNDO?
Oracle創建並管理用於回滾,撤銷,更改到資料庫的信息,此類信息主要包括事務的操作的記錄,主要是在他們被提交前,這些記錄被統稱為undo。
undo記錄的作用主要包括:
- 在發出ROLLBACK命令是進行事物回滾
- 恢複數據庫
- 實現讀一致性
- 使用falshback query來查詢較早時間點的數據
- 使用flashback特性恢復邏輯損壞
當ROLLBACK命令被提交時,undo記錄被用來撤銷未提交的事務對資料庫做的變更。在資料庫恢復時,undo記錄用來撤銷未被提交的redo log對數據文件做的變更。undo記錄通過記錄之前的數據映像的方式實現一個用戶訪問正在由另一個用戶修改的數據時的讀一致性。
自動undo管理介紹
這個章節介紹自動undo管理的概念,並討論如下主題:
- 自動undo管理概覽
- 關於undo保留期
自動undo管理概覽
用於管理撤消信息和空間,Oracle 提供了一個完全自動化的機制,稱為自動撤消管理。使用自動撤消管理,資料庫在undo表空間中管理undo段。從Oracle11g開始,自動undo管理是新創建資料庫的預設模式。在使用DBCA 創建資料庫時會自動創建一個自動擴展的undo表空間UNDOTBS1 。
undo表空間也可以被手工創建,創建方法參考"Creating an Undo Tablespace".
當實例啟動時,資料庫自動選擇第一個可用的undo表空間。如果沒有可用的undo表空間,實例就以沒有undo表空間的方式啟動,並存儲undo記錄在system表空間。這是不被推薦的,並且會在alert日誌中記錄警告'the system is running without an undo tablespace'.
如果在資料庫中存在多個undo表空間,你可以選擇指定其中一個作為undo表空間。這可以通過初始化參數 UNDO_TABLESPACE 設定。例:
UNDO_TABLESPACE = undotbs_01
如果指定的undo表空間不存在,則startup命令會失敗。在Oracle RAC 環境中可為每個實例單獨指定undo表空間。
資料庫也可運行在手工undo管理模式,在此模式下,undo空間通過回滾段管理,並且不使用undo表空間。
Note:
回滾段的空間管理相當複雜,Oracle 強烈建議將資料庫置於自動Undo管理模式.
如下是undo管理初始化參數的總結:
Initialization Parameter | Description |
UNDO_MANAGEMENT | 如果是auto或空,則使用自動undo管理,如果等於MANUAL, |
UNDO_TABLESPACE | 可選,只在自動undo管理模式下生效,指定了undo表空間名。只當資料庫有多個undo表空間時並且在你需要指定實例訪問特定的undo表空間時使用。 |
如果使用了自動undo管理模式,那麼初始化參數中關於手工管理undo的參數將失效。
Note:
在早期的版本中,oracle預設是手工管理模式。如果要使用自動undo管理,你需要首先創建一個undo表空間,然後修改 UNDO_MANAGEMENT 初始化參數為 AUTO. 如果你的資料庫是9i或之後的版本,並且你想修改為自動undo管理,請查看Oracle Database Upgrade Guide .
空的UNDO_MANAGEMENT在11g之後預設為自動undo管理,但是在之前預設為手工管理.所以在升級到11g的時候需要小心該參數. Oracle Database Upgrade Guide 描述了遷移到自動undo管理的正確方式,包含瞭如何設定undo表空間大小的信息。
關於undo保留期
在事務被提交以後,undo數據就不再被事務回滾和事務恢復需要。然而對於讀一致性的目的來說,長查詢(long-running queries)可能會需要這部分早期的undo信息來提供數據塊更早的映像信息。而且Oracle Flashback 特性也依賴於早期的undo信息的可用性。出於這些原因,undo信息保留的越久越好。
當使用了自動undo管理,就會有一個當前的undo retention period, 它指定了在Undo信息被覆蓋前會被oracle保留的最短時間。那些比當前的undo retention period老的(被提交)的undo信息被稱為過期的(expired),並且它們的空間是可以被當前事務覆蓋的。那些還未超出現在的undo retention period的undo信息被稱為未過期的(unexpired),會為一致性讀和Oracle Flashback操作保留。
Oracle 會依據undo表空間大小和系統的活動自動調整undo保留期,你也可以通過修改 UNDO_RETENTION 初始化參數自由設定最小的undo保留期。它的直接影響是:
- 對於固定大小的undo表空間來說,該參數不生效。資料庫總是會根據undo表空間大小和資料庫活動來調整該參數為最合適的可用的保留期 "Automatic Tuning of Undo Retention"
- 對於自動擴展的undo表空間來說,Oracle會嘗試提供由 UNDO_RETENTION 指定的最短的undo保留期, 當表空間不足時,表空間會選擇自動擴展而不是覆蓋未過期數據。如果指定了undo表空間的MAXSIZE ,當達到該值時,資料庫可能會開始覆蓋未過期undo信息。被DBCA自動創建的UNDOTBS1表空間是自動擴展的。
自動undo保留期調優
oracle依據undo表空間的配置自動調整undo保留期。
- 如果undo表空間被配置為AUTOEXTEND, 資料庫自動調整undo保留期到一個比系統中最長的一個活動查詢還要長的時間點。但是,這個保留期對於Oralce Flashback操作來說可能是不足的。如果Oralce Flashback操作提示snapshot too old錯誤,這預示著你必須手工干預來保證有足夠的undo data提供給閃回操作。為了更好的支持Oralce Flashback特性,你可以設置UNDO RETENTION 參數等於一個最長的期望閃回操作時間,同時也要修改undo tablespace到一個合適的固定大小。
- 如果undo表空間是固定大小的。資料庫根據表空間大小和當前系統負載自動調整undo保留期到一個最合適的保留期。一般來說這個保留期會大大超過最長的活動查詢的時間。
如果你準備修改undo表空間為固定大小,你必須指定它足夠大,如果空間太小,會報 如下兩個錯誤:
- DML 操作因為沒有足夠的undo提供給新的transactions而失敗。
- 長查詢操作報snapshot too old錯誤,這表明沒有足夠的undo數據來保證讀一致性。
See "Sizing a Fixed-Size Undo Tablespace" for more information
Note:
自動調整undo保留期不支持LOB類型.這是因為LOB類型的undo信息保留在他自己的LOB段而不是undo段。對於LOB,資料庫嘗試使用UNDO_RETENTION設定的最小的undo保留期。然後如果空間變低,未過期的LOB undo信息可能會被覆蓋。
See Also:
"Setting the Minimum Undo Retention Period"
保留期保證
為了保證資料庫滿足最長的查詢或或者閃回操作,你可以使用retention guarantee. 如果retention guarantee被使用,指定的最小的undo保留期就被保證了; 資料庫永遠不覆蓋未過期undo數據,即使事務因為undo表空間不足而失敗。如果沒使用retention guarantee ,資料庫會在undo空間較低時覆蓋未過期數據,這樣就降低了系統的undo保留期。該選項(retention guarantee)預設被禁用
WARNING:
使用retention guarantee 會導致並行DML操作失敗. 小心使用.
使用retention guarantee可通過在創建資料庫或創建undo表空間時指定retention guarante子句來設定。或者,稍候你可以在alter tablespace語句中添加該子句。禁用該特性通過retention noguarantee子句。
可以通過查看 DBA_TABLESPACES 視圖查看re