Oracle 10g數據庫中UNDO_RETENTION參數的使用的相關知識是本文我們主要要介紹的內容,接下來我們就開始介紹。我們知道,每一種數據庫都需要有一種管理回滾或者撤銷數據的方法。當一個DML發生以後,在用戶還沒有提交(COMMIT)改變,用戶不希望這種改變繼續保持,需要撤銷所做的修改,將數據回退到沒有發生改變以前,這時就需要使用一種被稱為撤銷記錄的數據。
使用撤銷記錄,我們可以:
1、當使用ROLLBACK語句時回滾事務,撤銷DML操作改變的數據。
2、恢復數據庫。
3、提供讀取的一致性。
4、使用Oracle Flashback Query分析基於先前時間點的數據。
5、使用Oracle Flashback特性從邏輯故障中恢復數據庫。
Oracle10g中的自動撤銷管理(AUM)
在Oracle10g中對於回滾段的管理可以通過配置參數而實現自動管理。為啟用撤銷空間的自動管理,首先必須在init.ora中或者SPFILE文件中指定自動撤銷模式。其次需要創建一個專用的表空間來存放撤銷信息,這保證用戶不會在SYSTEM表空間中保存撤銷信息。此外還需要為撤銷選擇一個保留時間。
如果需要實現AUM,需要配置以下3個參數:
UNDO_MAMAGEMENT
UNDO_TABLESPACE
UNDO_RETENTION
查看初始化參數的設置:
SQL> show parameter undo_tablespace;
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
undo_tablespace string UNDOTBS1
SQL> show parameter undo_management;
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
undo_management string AUTO
SQL> show parameter undo_retention;
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
undo_retention integer 900
SQL>
初始化參數的描述:
Initialization Parameter
Description
UNDO_MANAGEMENT
If AUTO, use automatic undo management. The default is MANUAL
UNDO_TABLESPACE
An optional dynamic parameter specifying the name of an undo tablespace. This parameter should be used only when the database has multiple undo tablespaces and you want to direct the database instance to use a particular undo tablespace.
UNDO_RETENTION
The UNDO_RETENTION parameter is ignored for a fixed size undo tablespace. The database may overwrite unexpired undo information when tablespace space becomes low.
For an undo tablespace with the AUTOEXTEND option enabled, the database attempts to honor the minimum retention period specified by UNDO_RETENTION. When space is low, instead of overwriting unexpired undo information, the tablespace auto-extends. If the MAXSIZE clause is specifIEd for an auto-extending undo tablespace, when the maximum size is reached, the database may begin to overwrite unexpired undo information.
如果將初始化參數UNDO_MANAGEMENT設置為AUTO,則Oracle10g將啟用AUM。
可以在初始化參數UNDO_RETENTION中設置撤銷保留時間的大小:
UNDO_RETENTION=1800 設置保留時間為30分鐘(1800秒)。
UNDO_RETENTION參數默認設置為900秒。
UNDO_RETENTION的值應該設置為多少才合理?
不存在理想的UNDO_RETENTION的時間間隔。保留時間間隔依賴於估計最長的事務可能運行的時間長度。根據數據庫中最長事務長度的信息,可以給UNDO_RETENTION分配一個大致的時間。
可以通過v$unDOStat視圖的maxquerylen列查詢在過去的一段時間內,最長的查詢執行的時間(以秒為單位)。UNDO_RETENTION參數中的時間設置應該至少與maxquerylen列中給出的時間一樣長。
Oracle提供如下為新數據庫設置撤銷保留時間間隔的指導:
1、OLTP系統:15分鐘
2、混合: 1小時
3、DSS系統:3小時
4、閃回查詢:24小時
UNDO_RETENTION參數的較高值並不保證撤銷數據保留UNDO_RETENTION參數指定的時間。為保證撤銷保留指定的時間,必須使用RETENTION GRARANTEE子句。
例如:
- CREATE UNDO TABLESPACE UNDOTBS01
- DATAFILE
- ‘E:/Oracle/product/10.2.0/oradata/keymen/UNDOTBS01.DBF’
- SIZE 500M AUTOEXTEND ON
- RETENTION GUARANTEE
也可以使用ALTER DATABASE命令保證數據庫中的撤銷保留。
ALTER DATABASE UNDOTBS01 RETENTION GUARANTEE。
關閉撤銷信息的保證保留。
ALTER DATABASE UNDOTBS01 RETENTION NOGUARANTEE。
設置撤銷表空間的尺寸
Oracle建議使用Undo Advisor的幫助下設置撤銷表空間的尺寸。可以創建一個小尺寸(大約500M)的撤銷表空間,AUTOEXTEND數據文件屬性設置為ON,從而允許表空間自動擴展。此表空間將自動增長以支持數據庫中活動事務數目的增長以及事務長度的增長。
在數據庫運行適當的一段時間後,可以使用UNDO Advisor來得出關於設置撤銷表空間尺寸的建議。應該使用Analysis Time Period字段中允許的最大時間。出於此目的,可以使用OEM UNDO Management頁面中給出的Longest——Runing Query長度。還必須根據閃回需求指定New UNDO Retention字段的值。例如:如果希望表能閃回24小時,應該使用24小時作為這個字段的值。
假如數據庫中用RETENTION GUARANTEE子句配置了保證保留撤銷。如果撤銷表空間太小不能滿足使用它的所有活動事務,那麼會發生以下情況:
1、如果撤銷表空間用完85%,Oracle將發布一個自動表空間警告。
2、當撤銷表空間用完97%時,Oracle將發布一個自動表空間嚴重警告。
3、所有DML語句將不允許,並且會接收到一個空間超出錯誤。
4、DDL語句允許繼續執行。
以上就是Oracle 10g中UNDO_RETENTION參數的使用的全部內容,本文我們就介紹到這裡了,希望本次的介紹能夠對您有所收獲。