RETENTION GUARANTEE
为保障运行时间长的查询和闪回操作成功,可以启用RETENTION GUARANTEE.
如果启用RETENTION GUARANTEE,然后指定最小的undo保留时间,那么即使因为undo表空间空间不足造成交易失败,数据库不会覆盖未过期的undo数据库,如果RETENTION GUARANTEE未启用,则数据库可以重写没有过期的undo空间,从而降低系统的undo保留时间。这个选项默认是禁用的。
警告:启用RETENTION GUARANTEE可能会导致多个DML失败。慎用。
你可以在创建undo表空间或者表空间时使用RETENTION GUARANTEE子句启用RETENTION GUARANTEE,也可以后期用alter tablespace指定,禁用则使用RETENTION NOGUARANTEE子句。
可以通过查看dba_tablespaces视图里面的retention列查看对应信息,该列的值可以是GUARANTEE,NOGUARANTEE,NOT APPLY,NOT APPLY适用于undo表空间以外的表空间
UNDO保留时间的调整和告警的阈值
对于固定大小的undo表空间,数据库根据数据库统计信息和undo表空间的大小计算最佳保留时间。
对于undo管理的优化,并不100%基于表空间大小的调整。数据库调整undo保留时间基于表空间大小的85%,或者所用空间的告警阈值百分比,以较低的为准(默认告警阈值是85%,但是可以更改)。因此,如果调整undo表空间的告警阈值到85%以下,这可能会减少undo_retention的大小。更多信息参见“Managing Tablespace Alerts”.
跟踪已调整的undo保留周期
可以通过查询v$undostat视图的tuned_undoretention列来确定当前保留时间。
该视图包含过去4天时间里每隔10分钟一次的统计信息。(4天前的数据查看dba_hist_undostat视图),关于v$undostat的信息参考Oracle Database Reference 。