`
真爱无敌
  • 浏览: 23131 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

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了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics