undo段整理

undo的存在是为了四个目的:

原子性:保证事务的统一提交或回滚.

一致性:保证查询的结果不出现脏数据,即是在查询过程中,某些数据被修改了,查询出来的结果依然是开始查询时应该有的结果.

隔离性:俩会话之间互相不可见未提交或未回滚的数据.

闪回:   保证数据的安全.

 

1.undo的三个参数.
undo_tablespace:指定运行的undo表空间.
undo_management:undo表空间的管理方式.
undo_retention:undo表空间保留的时间.

 

2.undo的三种状态.
active:活动状态,即未提交或未回滚的事务,这个状态的撤消段是绝对不能被覆盖的.
expire:过期状态,即标识这个状态的回滚段已经提交,并且已经超过了undo_retention的保留时间,可以随时被覆盖.
unexpired:未过期状态,即标识这个状态的回滚段已经提交,但是未超过undo_retention的保留时间.这种情况下,如果undo表空间设置为guarantee,那么当撤消表空间的过期段不够时,不会覆盖unexpire状态的撤消段,就会出现事务失败,ORA-30036错误,如果undo表空间设置为unguarantee,那么当撤消表空间的过期段不够时,会强行覆盖unexpire的段,来保证事务的成功执行,这样可能会导致出现ORA-01555错误,因为保留的旧数据被覆盖掉了,如果一个查询的时间正好undo_retention的时间一致,那么就会导致快照过旧.

 

3.undo的2个报错ORA-01555/ORA-30036.
ORA-01555:快照过旧,导致原因是撤消段的数据被覆盖,但是查询时需要用到该数据,通常是由于undo_retention设置时间不够长或者撤消表空间不够大导致.

ORA-30036:不能扩展撤消段,导致原因是撤消表空间不够大导致.

 

4.undo的guarantee.
存放在dba_tablespaces表的retention字段中,在10g包括以后的版本中出现的参数,表示无论如何都会把已提交,未过期的数据保存到足够undo_retention的这个时间.

 

5.数据字典:
undo表空间的使用三种使用状态存放在dba_undo_extents表中.

v$undostat:存放undo使用率.

 

其实最终导致的错误的就是撤消表空间不够大,所以只要出现这类问题都基本可以归咎与撤消表空间的设置不合理.但是存在一种特殊情况就是使用人数由于某些爆炸性原因突增,达到之前前所未有的高度.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值