问题描述
最近巡检oracle数据库发现Oracle Undo表空间使用率几乎达到100%,预警系统频繁报Undo表空间使用率过高
问题分析:
1、undo的作用
用于事务的回滚
用于数据库的恢复
提供读一致性
用于数据库的闪回查询
通过闪回恢复数据库的逻辑错误
2、查看数据库版本信息
3、查询undo表空间使用率
4、查看undo参数信息
show parameter undo
5、查看Alert日志信息
6、使用undo说明
如果undo 表空间是自动扩展的,那么数据会尝试使用UNDO_RETENTION 参数,如果表空间不足时,不会去重写没有过期(仅仅是没有过期的committed的数据)的undo数据,而是会自动扩展undo 表空间。当undo 表空间扩展达到MAXSIZE值时,数据库开始重写没有过期的undo 数据。
如果UNDO 表空间的大小是固定的,即不可自动扩展,那么在这种情况下,UNDO_RETENTION参数是会自动忽略,不会生效,数据库根据系统活动情况和undo表空间大小来调整undo retention period为最佳值。
7、Undo Retention Period 说明
事务提交之后,UNDO 数据就不需要用来rollback 或者事务恢复,但是为了一致性读,比如long-runing的查询可能还是需要这些旧的undo 数据来获取block的前镜像。此外,Flashback的特性也会受undo信息的影响,因为这些原因,旧的undo 信息还是需要尽可能的长。
当启用AUM后,就会涉及到undo retention period,其是保存最小的undo信息的时间。 Old undo 信息(已经committed)如果超过了这个retentionperiod,那么其就会被标记为expiered,对应的空间也可以被其他的事务重写。
Oracle 会根据undo 表空间的大小和系统的活动情况自动调整undoretention period的时间。我们也可以手动在初始化参数里修改UNDO_RETENTION参数,该参数单位是秒
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29108856/viewspace-2136965/
,如需转载,请注明出处,否则将追究法律责任。