最近因为undo表空间使用过大,需要写一些文档,翻看官方文档,找些语句,顺便稍微翻译一下。
该参数在11gr2-12cr2版本的官网文档说明未发生根本性改变
UNDO_RETENTION
属性 | 描述 |
参数类型 | 整数 |
默认值 | 900 |
可修改 | alter system |
PDB | 可修改(12c新增) |
值的范围 | 0-2147483647 |
基础参数 | NO |
oracle RAC | oracle建议在多个实例上使用相同的值 |
对于自动扩展的undo 表空间,该参数(以秒为单位)指定回滚保留的最低阈值。并自动调整undo保留的时间以满足undo查询的要求。对于固定大小的undo表空间,系统自动调整到最大可能undo保留时间,基于undo表空间的大小和使用历史,并忽略UNDO_RETENTION参数。例外的情况:retention guarantee is enabled。--不太懂。
该参数的设置应满足系统闪回的要求。LOB不支持undo的自动调整。对LOB字段undo保留值的调整基于UNDO_RETENTION参数。
只有在undo表空间空间充足的情况下,该参数可以被认为有效,如果一个活动的事务要求undo空间并且undo表空间没有可用空间,系统会开始重用未到期的undo空间。此操作可能会导致某些查询失败,并报出"ORA-01555 snapshot too old“ 错误。
可以通过查询动态性能视图V$UNDOSTAT中的TUNED_UNDORETENTION列来获取当前数据库的undo表空间能保留的undo时间总数。
可以参考以下文档:
Oracle Database SQL Language Reference for more information about creating undo tablespaces
Oracle Database Administrator's Guide for more information about managing undo data