自動撤銷管理(AUM)

一設置AUM

  設置自動撤銷管理,涉及三個參數:undo_management、undo_tablespace、undo_retention

  1、undo_management

  設置自動撤銷管理,必須設置初始化參數undo_management=auto

  alter system set undo_management=auto scope=spfile;

  該參數也是必須要設定的

  2、undo_tablespace

  指定數據庫使用的撤銷表空間

  (1)如果沒有指定該參數且沒有可用的撤銷表空間,oracle將使用system表空間。

  如果沒有指定該參數,但有撤銷表空間,oracle將使用該撤銷表空間;若有多個撤銷表空間,oracle將使用第一個可用的作爲數據庫撤銷表空間。

  如果該參數指定的撤銷表空間不存在,將報錯。

  (2)即便數據庫中有多個撤銷表空間,oracle在同一時間也將只是用一個;可以使用該參數切換oracle使用的撤銷表空間

  alter system set undo_tablespace=undo_tablespace_name;

  oracle使用的撤銷表空間不能被刪除,需要刪除的話,必須先切換撤銷表空間。

  (3)創建撤銷表空間:

  create undo tablespace undo_tablespace_name

  datafile 'data_path_name'

  size nm

  [autoextend on next mm maxsize pm]

  [extent management local ]                            

  [segment space management manual]  --撤銷表空間的段空間管理必須爲manual

  [{uniform [ size am] } | autoallocate]

  (4)如果不能確定撤銷表空間的大小,可以先使用自動擴展的數據文件,在創建撤銷表空間時指定,也可以通過下面方式:

  alter database datafile 'datafile_path_name' autoextend on next mm maxszie pm;

  在確定撤銷表空間的大小後再使用固定的表空間:

  alter database datafile 'datafile_path_name' autoextnd off;

  3、undo_retention

  指定已提交事務的撤銷數據保留的時間長短

  alter system set undo_retention=n            --n爲保留的時間大小,默認爲900,單位秒

  oracle絕對保證活動的撤銷數據,即事務尚未提交的撤銷數據。如果空間不足,將先刪除事務已經提交且保留時間超過undo_retention設定值的撤銷數據,如果空間仍然不足,將刪除事務已經提交但保留時間未超過undo_retention設定值的撤銷數據。

  (1)使用AUM且數據文件自動擴展,oracle將以undo_retention設定的值爲最小值,自動調整撤銷保留時間,照顧到數據庫中最長查詢的撤銷要求。

  (2)使用AUM但固定數據文件,oracle將忽略用戶設定的undo_retention的值,自動調整撤銷保留時間,盡最大努力保留撤銷數據。

  (3)前兩種情況相比,如果空間允許,一般使用固定數據文件時撤銷數據保留的時間要長。

二、如何設置undo_retention?

  建議參考數據庫中最長事務的時間大小,設置的undo_retention應該比最長事務的時間稍大一點。

  select max(maxquerylen) from v$undostat;

  如果使用閃回,應該保證undo_retention的設置能夠滿足的閃回要求。

三、如何確定撤銷表空間的大小

  建議首先創建自動擴展的撤銷表空間,之後使用undo advisor確定撤銷表空間的大小,然後更改撤銷表空間爲固定大小。

四、有保證的撤銷保留

  使用undo_retention設定保留時間,oracle並不一定能滿足你的要求,當空間不足時,oracle依然會刪除沒有達到保留時間的撤銷數據。如果需要強制oracle按照你設定值保留撤銷數據,可以使用有保證的撤銷保留。

  1、create undo tablespace

       .....

       retention guarantee;

  2、alter tablespace undo_tablespace_name retention guarantee;

  取消有保證的撤銷保留:alter tablespace undo_tablespace_name retention noguarantee;

  使用有保證的撤銷保留,如果空間不足以滿足活動事務,那麼所有的DML操作都不允許,會收到空間出超的錯誤;二DDL語句可以繼續進行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章