在Oracle9i中,Oracle對回滾段進行了重新命名,現在將其作為撤銷日志。在傳統的操作上,回滾段保存交換的撤銷信息,直到系統發送一個響應或者回滾語句。
人工撤銷管理在Oracle9i仍然被使用,但絕大多數的Oracle DBAs都選擇了新的自動方法,這使得它們可以從常規撤銷管理任務和調整中解放出來。
最重要的是,自動撤銷管理允許DBA指定撤銷信息在提交之後需要保留的時間,以防止在長時間的查詢過程中出現“snapshot too old”的錯誤。可以通過設置UNDO_RETENTION參數來實現這一過程。這一參數的缺省值為900秒(即15分鐘),但你可以設置這一參數以保證 Oracle保留撤銷日志。
無需定義和管理回滾段,你就可以簡單地指定一個撤銷表空間而減輕Oracle9i的負擔。
自動撤銷管理需要一個當地管理撤銷表空間,這一表空間用於存放撤銷段。你所需要的是建立一個撤銷表空間,設置UNDO_MANAGEMENT=AUTO,然後與數據庫進行連接。當啟動一個例子時,Oracle會自動選擇第一個可用的撤銷表空間。
CREATE UNDO TABLESPACE
ts_undo
DATAFILE
'/u01/oradata/prod/ts_undo.dbf'
SIZE 2M REUSE AUTOEXTEND ON;
Alter system set undo_tablespace=ts_undo;
Alter system set undo_management=auto;
一旦已經建立了撤銷表空間,你可以使用以下新Oracle9i查詢來查看撤銷信息。
V$UNDOSTAT
V$ROLLSTAT
V$TRANSACTION
DBA_UNDO_EXTENTS