Oracle 数据库根据撤消表空间的配置方式自动调整撤消保留期。在本文中,您将学习如何在 oracle dba 中调整和设置撤消保留期。
1. 如果撤消表空间是固定大小的,则数据库会整撤消保留期,以便为该表空间大小和当前系统负载提供最佳可能的撤消保留期。此调整后的撤消保留期可以显着大于指定的最小保留期。
2. 如果 undo 表空间配置了 auto-extend 选项,则数据库将 undo 保留期调整为比当时系统上运行时间最长的查询长一些。同样,此调整后的保留期可以大于指定的最小保留期。
笔记:
lob 不支持自动调整撤消保留。这是因为 lob 的撤消信息存储在段本身而不是撤消表空间中。对于 lob,数据库尝试遵守undo_retention 指定的最短撤消保留期。 但是,如果空间变小,可能会覆盖未过期的 lob 撤消信息。
您可以通过查询 v$undostat 视图的 tune_undoretention 列来确定当前的保留期。此视图包含过去 4 天内每 10 分钟统计信息收集间隔的一行。(超过 4 天,数据在 dba_hist_undostat 视图中可用。) Tuned_undoretention 以秒为单位。
撤消保留的自动调整
Sql> select to_char(begin_time, ‘dd-mon-rr hh24:mi’) begin_time,
To_char(end_time, ‘dd-mon-rr hh24:mi’) end_time, tuned_undoretention
From v$undostat order by end_time;
Begin_time end_time tuned_undoretention
———————— ——————– ———————————–
04-feb-05 00:01 04-feb-05 00:11 12100
07-feb-05 23:21 07-feb-05 23:31 86700
07-feb-05 23:31 07-feb-05 23:41 86700
07-feb-05 23:41 07-feb-05 23:51 86700
07-feb-05 23:51 07-feb-05 23:52 86700
576 rows selected.
撤消保留调整和警报阈值:
对于固定大小的撤消表空间,数据库根据数据库统计信息和撤消表空间的大小计算最大撤消保留期。为了优化撤消管理,数据库不是根据表空间大小的 100% 进行调整,而是根据表空间大小的 85% 或已用空间的警告警报阈值百分比(以较低者为准)来调整撤消保留期。(警告警报阈值默认为 85%,但可以更改。)因此,如果您将 undo 表空间的警告警报阈值设置为低于 85%,这可能会减少调整后的 undo 保留期长度。
设置撤消保留期
您可以通过设置 undo_retention 初始化参数来设置撤消保留期。此参数指定所需的最小撤消保留期(以秒为单位)。当前的撤消保留期可能会自动调整为大于 undo_retention,或者,除非启用保留保证,否则如果空间不足,则小于 undo_retention。
要设置撤消保留期:
执行以下操作之一:
- 在初始化参数文件中设置 undo_retention。
- 撤消保留 = 1800
- 使用 alter system 语句随时更改 undo_retention:
- 更改系统设置 undo_retention = 2400;
undo_retention 参数更改的效果是立竿见影的,但只有在当前撤消表空间有足够空间时才能兑现。
原文标题:How to Tune and Setting the Undo Retention Period - Oracle DBA
原文链接:https://mindmajix.com/oracle-dba/how-to-tune-and-setting-the-undo-retention-period-in-oracle-dba




