oracle10 dba_tablespace中的retention

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   NO
UNDOTBS1                             8192 LOCAL      UNDO      NOGUARANTEE NO
SYSAUX                               8192 LOCAL      PERMANENT NOT APPLY   NO
TEMP                                 8192 LOCAL      TEMPORARY NOT APPLY   NO
USERS                                8192 LOCAL      PERMANENT NOT APPLY   NO
EXAMPLE                              8192 LOCAL      PERMANENT NOT APPLY   NO
TEST                                 8192 LOCAL      PERMANENT NOT APPLY   NO
UNDO_SMALL                           8192 LOCAL      UNDO      NOGUARANTEE NO
RBTEST                               8192 LOCAL      PERMANENT NOT APPLY   NO
MYALAN                               2048 LOCAL      PERMANENT NOT APPLY   NO
ALAN_SPACE01                         8192 LOCAL      PERMANENT NOT APPLY   NO
ALAN_SPACE02                         8192 LOCAL      PERMANENT NOT APPLY   NO
ALAN_SPACE03                         8192 LOCAL      PERMANENT NOT APPLY   NO
LMT                                  8192 LOCAL      PERMANENT NOT APPLY   NO
MYTEST                               8192 LOCAL      PERMANENT NOT APPLY   NO
MSSM                                 8192 LOCAL      PERMANENT NOT APPLY   NO
MYSTOCKS                             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 APPLY
UNDOTBS1                             8192 LOCAL      UNDO      NOGUARANTEE
SYSAUX                               8192 LOCAL      PERMANENT NOT APPLY
TEMP                                 8192 LOCAL      TEMPORARY NOT APPLY
USERS                                8192 LOCAL      PERMANENT NOT APPLY
EXAMPLE                              8192 LOCAL      PERMANENT NOT APPLY
TEST                                 8192 LOCAL      PERMANENT NOT APPLY
UNDO_SMALL                           8192 LOCAL      UNDO      GUARANTEE
RBTEST                               8192 LOCAL      PERMANENT NOT APPLY
MYALAN                               2048 LOCAL      PERMANENT NOT APPLY
ALAN_SPACE01                         8192 LOCAL      PERMANENT NOT APPLY
ALAN_SPACE02                         8192 LOCAL      PERMANENT NOT APPLY
ALAN_SPACE03                         8192 LOCAL      PERMANENT NOT APPLY
LMT                                  8192 LOCAL      PERMANENT NOT APPLY
MYTEST                               8192 LOCAL      PERMANENT NOT APPLY
MSSM                                 8192 LOCAL      PERMANENT NOT APPLY
MYSTOCKS                             8192 LOCAL      PERMANENT NOT APPLY

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

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

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

转载于:http://blog.itpub.net/12361284/viewspace-199208/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值