初始化参数UNDO_RETENTION

初始化参数UNDO_RETENTION

关于初始化参数UNDO_RETENTION的设置,严格说起来也是与UNDO表空间有关系,但是思量再三,我觉着还是有必要单拎出来详细介绍。

该参数用来指定UNDO段中数据保存的最短时间,以秒为单位,是一个动态参数,完全可以在实例运行时随时修改,通常默认是900秒,也就是15分钟。

首先要注意,UNDO_RETENTION只是指定UNDO段中数据的过期时间,并不是说,UNDO段中的数据一定会在UNDO表空间中保存15分钟。如一个新事务开始的时候,如果此时UNDO表空间已经被写满,则新事务的数据会自动覆盖已提交事务的数据,而不管这些数据是否已过期,因此呢,这就又关联回了第一点,当你创建一个自动管理的UNDO表空间时,还要注意其空间大小,要尽可能保证UNDO表空间有足够的存储空间。

同时还要注意,也并不是说,UNDO_RETENTION中指定的时间一过,已经提交事务中的数据就立刻无法访问,当超出UNDO_RETENTION参数指定的时间后,这部分数据占用的空间将会被标识为可重用,不过只要不被别的事务触发的数据覆盖,它会仍然存在,并可以随时被Flashback特性引用。如果你的UNDO表空间足够大,而数据库又不是那么繁忙,那么其实UNDO_RETENTION参数的值并不会影响到你,哪怕你设置成1(这么说好像绝对了点,大家一定要注意理解,别钻牛角尖),只要没有事务去覆盖UNDO数据,这部分数据就会持续有效。因此呢,再次重复那句话,要注意UNDO表空间的大小,保证其有足够的存储空间。

最后,只有在一种情况下,UNDO表空间能够确保UNDO中的数据在UNDO_RETENTION指定时间过期前一定有效,就是为UNDO表空间指定RETENTION GUARANTEE,指定之后,不会覆盖UNDO表空间中未过期的UNDO数据,例如:

 
  
  1. SQL> ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE; 

如果想禁止UNDO表空间RETENTION GUARANTEE,例如:

 
  
  1. SQL> ALTER TABLESPACE UNDOTBS1 RETENTION NOGUARANTEE; 

转了一圈,问题又回来了,既然它看起来有用又像没有用,为什么还要设置它呢?嘿嘿,就我理解,其存在的真实用途,就是提醒你UNDO表空间很重要,给它指定分配一个合适的大小更重要哟。

 

(三思的涂抹oracle)

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

转载于:http://blog.itpub.net/196700/viewspace-687543/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值