1. 首页
  2. IT资讯

oracle10 dba_tablespace中的retention

http://203.208.39.132/search?q=cache:jFfUVEWccvcJ:space.itpub.net/12361284/viewspace-199208+undo_retention+0&cd=1&hl=zh-CN&ct=clnk&gl=cn&client=aff-360homepage&st_usg=ALhdy2_nln5BMxV74wF4GwHFmFJdVblqIA[@more@]

oracle10g中,针对dba_tablespace,加了其中一个额外列是retention.回忆一下Oracle 10g之前,在自动Undo管理的模式下,我们都知道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模式可以

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

TABLESPACE_NAME BLOCK_SIZE SEGMENT_SP CONTENTS RETENTION BIG—————————— ———- ———- ——— ———– —SYSTEM 8192 LOCAL PERMANENT NOT APPLY NOUNDOTBS1 8192 LOCAL UNDO NOGUARANTEE NOSYSAUX 8192 LOCAL PERMANENT NOT APPLY NOTEMP 8192 LOCAL TEMPORARY NOT APPLY NOUSERS 8192 LOCAL PERMANENT NOT APPLY NOEXAMPLE 8192 LOCAL PERMANENT NOT APPLY NOTEST 8192 LOCAL PERMANENT NOT APPLY NOUNDO_SMALL 8192 LOCAL UNDO NOGUARANTEENORBTEST 8192 LOCAL PERMANENT NOT APPLY NOMYALAN 2048 LOCAL PERMANENT NOT APPLY NOALAN_SPACE01 8192 LOCAL PERMANENT NOT APPLY NOALAN_SPACE02 8192 LOCAL PERMANENT NOT APPLY NOALAN_SPACE03 8192 LOCAL PERMANENT NOT APPLY NOLMT 8192 LOCAL PERMANENT NOT APPLY NOMYTEST 8192 LOCAL PERMANENT NOT APPLY NOMSSM 8192 LOCAL PERMANENT NOT APPLY NOMYSTOCKS 8192 LOCAL PERMANENT NOT APPLY NO

SQL>alter tablespace undo_small retention guarantee;

表空间已更改。

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

TABLESPACE_NAME BLOCK_SIZE SEGMENT_SP CONTENTS RETENTION—————————— ———- ———- ——— ———–SYSTEM 8192 LOCAL PERMANENT NOT APPLYUNDOTBS1 8192 LOCAL UNDO NOGUARANTEESYSAUX 8192 LOCAL PERMANENT NOT APPLYTEMP 8192 LOCAL TEMPORARY NOT APPLYUSERS 8192 LOCAL PERMANENT NOT APPLYEXAMPLE 8192 LOCAL PERMANENT NOT APPLYTEST 8192 LOCAL PERMANENT NOT APPLYUNDO_SMALL 8192 LOCAL UNDO GUARANTEERBTEST 8192 LOCAL PERMANENT NOT APPLYMYALAN 2048 LOCAL PERMANENT NOT APPLYALAN_SPACE01 8192 LOCAL PERMANENT NOT APPLYALAN_SPACE02 8192 LOCAL PERMANENT NOT APPLYALAN_SPACE03 8192 LOCAL PERMANENT NOT APPLYLMT 8192 LOCAL PERMANENT NOT APPLYMYTEST 8192 LOCAL PERMANENT NOT APPLYMSSM 8192 LOCAL PERMANENT NOT APPLYMYSTOCKS 8192 LOCAL PERMANENT NOT APPLY

需要注意的是这种guarantee模式只针对undo tablespace别的表空间是不适用的。

在Oracle 10g中我们还可以设置undo_retention=0来让Oracle自动调整保留提交后undo信息的时间

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/450962/viewspace-1027867/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/194800.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code