oracle undo 表空间

一、undo表空间的作用:

Oracle 使用undo来保存数据库事务操作前的旧数据;当一个事务开始时,oracle会把数据保存在undo表空间中;如果事务失败或者事务回滚,oracle将用回滚段中的历史数据,还原表数据;

二、监控undo表空间:

在日常数据库运行中,可能出现以下错误:

1、由于undo表空间所在的磁盘空间不够,造成数据库异常:

如:undo表空间所在磁盘大小为10G,创建表空间的语句为:CREATE UNDO TABLESPACE undotbs_02
DATAFILE '/u01/oracle/rbdb1/undo0201.dbf' SIZE 1024M REUSE AUTOEXTEND ON;表空间是自动增长,当用户删除超过10G的数据时,数据库将报:ORA-01650: unable to extend rollback segment 不能扩展回滚段。所以删除大表时不能简单的用delete from tablename语句;要根据实际情况做相应改变。

2、ORA-01555 snapshot too old 保存在undo表空间中的数据不存在报错:

出现这种错的原因有:

(1)、查询时间太长,导致在undo段中的数据已经发生变化,报错。

(2)、使用flashback queries闪回查询在undo段中的某个时间点已经不存在的数据造成。

三、表空间参数配置:

1、UNDO_RETENTION配置:

UNDO_RETENTION参数表示,保留在undo表空间中的非事务数据的过期时间;0表示自动处理,表示数据有可能随时被覆盖。最大可设置2的32次方。

2、UNDO Retention guaranteeing设置:

语法为:ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;

设置参数为guarantee时,新事务操作时发现undo表空间不足,数据库会让事务失败;如果设置为noguarantee时,数据库会强制清除undo空间,避免事务失败。

 

在实际过程中,只要做好数据库undo表空间磁盘容量使用的监控就OK了。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值