retention guarantee使用場景和作用

gholay發表於2014-02-24

retention guarantee使用場景和作用

undo_retention引數的作用:
undo_retention用來控制當transaction被commit之後,undo資訊的保留時間。這些undo資訊可以用來構造consistent read以及用於一系列的閃回恢復,而且足夠的undo資訊還可以減少經典的ORA-01555錯誤的發生,在Oracle 9R1中呢,這個value的預設值是900秒,Oracle 9R2以後這個value提高到了10800秒。即使我們設定了undo_retention這個引數,那麼在預設情況下,這是一個noguarantee的限制。也就是說我將undo_retention=10800,那麼原本以為在一個transaction commit之後,之前的undo還可以儲存10800秒,才可以被別的transaction DML覆蓋,孰不知當有其他的transaction DML處理過程中需要undo空間的時候,恰恰這個時候not enough space for undo,也就說我並沒有允許undo tablespace自動擴充套件。由於我們的retention是noguarantee的,所以transaction DML就會忽略這種retention的時間限制直接回繞覆蓋我們的undo資訊,這種結果下其實在很多情況下是不希望得到的。 

Oracle 10g之後,oracle提出了一個特性就是undo的guarantee,可以強制oracle來guarantee的undo資訊,也就說如果一個session的transaction DML需要undo空間的時候,即使undo的空間不足,這個session也不會強制覆蓋由undo_retention所保護的undo資訊,那麼這個transaction DML會因為undo空間的不足會而report一個error並自動退出。 在Oracle10g中如何要修改guarantee模式可以。

查詢表空間是否guarantee

SQL> select tablespace_name,block_size,extent_management , segment_space_management,contents,retention  from dba_tablespaces; 
使undo表空間retention guarantee

 SQL>alter tablespace undo_samll retention guarantee; 表空間已更改。 

SQL> select tablespace_name,block_size,extent_management  segment_space_management,contents,retention from dba_tablespaces; 

需要注意的是這種guarantee模式只針對undo tablespace別的表空間是不適用的。 

在Oracle 10g中我們還可以設定undo_retention=0來讓Oracle自動調整保留提交後undo資訊的時間。       



10g RETENTION GUARANTEE 的作用  

1、先解釋下undo_retention 

設定undo_retention,保證commit 後的資料在undo segment中保留多長時間。但是並不能保證commit後的undo 資訊在undo_retention的時間內一定不被覆寫,當undo segment不夠時,還是會覆蓋已commitundo 資訊。 

2、如果需要保證在undo_retention時間內undo 資訊一定不被覆寫的話,可以對undo segment設定RETENTION GUARANTEE。但是這個引數受到undo_retentionundo size的限制。如果undo size 太小,undo_retention設定太久,設定retention guarantee 時就會報錯:   

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2'   

3、設定該引數 

 alter tablespace undotbs2 retention guarantee;   

撤銷該引數 

 alter tablespace undotbs2 retention noguarantee; 




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1087238/,如需轉載,請註明出處,否則將追究法律責任。

相關文章