retention guarantee使用場景和作用
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不夠時,還是會覆蓋已commit的undo 資訊。
2、如果需要保證在undo_retention時間內undo 資訊一定不被覆寫的話,可以對undo segment設定RETENTION GUARANTEE。但是這個引數受到undo_retention和undo 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- undo_retention的作用
- useCallback 和 useMemo 使用場景
- MySQL和Elasticsearch使用場景MySqlElasticsearch
- iOS runtime執行時的作用和應用場景iOS
- ThreadLocal 原理和使用場景分析thread
- Java CompletionService 的作用與場景解析Java
- BeautifulSoup和etree的區別和使用場景
- Java程式中的代理作用和應用場景及實現Java
- margin和padding使用的場景有哪些?padding
- Redis使用場景Redis
- RabbitMQ 使用場景MQ
- Vuex使用場景Vue
- 美顏sdk在影片場景有哪些作用?
- Java中的引用型別和使用場景Java型別
- 前端兩種路由實現和使用場景前端路由
- 面試中的 ThreadLocal 原理和使用場景面試thread
- sql中in和exists的原理及使用場景。SQL
- Java Shutdown Hook 場景使用和原始碼分析JavaHook原始碼
- Hbase原理的介紹和使用場景分析
- @Transactional詳解(作用、失效場景與解決方法)
- ArrayList和LinkedList底層原理的區別和使用場景
- Vue核心知識-computed和watch的使用場景和方法Vue
- 水壓監控物聯網有什麼應用場景和功能作用
- grep 的使用場景
- 泛型使用場景泛型
- Go Type 使用場景Go
- Map的使用場景
- git常用使用場景Git
- RocketMQ場景使用技巧MQ
- 非同步神器:CompletableFuture實現原理和使用場景非同步
- v-model 使用場景和原始碼學習原始碼
- JUC之CountDownLatch的原始碼和使用場景分析CountDownLatch原始碼
- [20190531]lob型別pctversion 和 retention.txt型別
- js中call,apply和bind方法的區別和使用場景JSAPP
- call apply bind的作用及區別? 應用場景?APP
- 使用策略模式重構電商折扣和支付場景模式
- redis 五種資料型別和使用場景梳理!Redis資料型別
- 關於Ajax和websocket的區別以及使用場景!Web
- JAVA多執行緒使用場景和注意事項Java執行緒