如何在数据库中设置 undo retention 参数?

通过如下命令查看当前undo_retention的设置,默认是900s
show parameter undo;
复制
然后通过如下命令设置undo_retention,这个值可以根据自己的需求设置,单位为s
alter system set undo_retention=3600 scope=both;
复制


1.如果undo表空间没有设置成自动扩展, 单纯的设置undo_retention是没有意义的;
2.如果undo表空间设置了自动扩展, 也无法保证设置的这个时间, 因为可能自动扩展的空间也没有了(表空间达到最大,文件系统满等情况)
3.如果要确保设置的undo_retntion生效, 需要undo表空间自动扩展, 同时还要ALTER TABLESPACE undotbs RETENTION GUARANTEE; 这种情况就能保证查询时长在undo_retention内的SQL不会出现ora-01555错误, 但是一些dml语句可能因为undo空间不够而失败


使用 SHOW PARAMETER undo_retention 命令可以查看当前数据库中 undo_retention 参数的设置。例如:
SQL> SHOW PARAMETER undo_retention;
这将显示当前的 undo_retention 参数值。
如果需要修改 undo_retention 参数的值,可以使用 ALTER SYSTEM 语句。例如,将 undo_retention 设置为 1200 秒(即 20 分钟):
SQL> ALTER SYSTEM SET undo_retention = 1200;
这将使数据库中的 undo_retention 参数值变为 1200 秒。
修改参数后,可以再次使用 SHOW PARAMETER undo_retention 命令来验证参数值是否已成功更新。例如:
SQL> SHOW PARAMETER undo_retention;
这将显示修改后的 undo_retention 参数值。


