有个参数叫_undo_autotune=true,undo_retention不再适用
Oracle会自行决定tuned_undo_retention,然后试图增大undotablespace
从10.2版本开始,oracle默认采用自动调整undoretention的方法
根据你undotablespace的大小以及系统的繁忙程度(v$undostat中信息)自动调整undo_retention参数
所以在10g的数据库上你会经常发现undotablespace永远是满的
因为当你undotablespace有空闲空间时,系统自动调大undo_retention来保留更多的undoblocks
这一方法有利于时间长的查询,但是对于典型的OLTP系统来说不太适用
因为OLTP上不太可能跑如此长时间的查询,而且在很繁忙的OLTP上还会导致上面所遇到的问题
SQL> column NAME format a15
SQL> column VALUE format a15
SQL> column DESCRIPTION format a40
SQL> select a.ksppinm name,b.ksppstvl value,a.ksppdesc description
from x$ksppi a,x$ksppcv b
where a.indx = b.indx
and a.ksppinm like '%_undo_autotune%'
NAME VALUE DESCRIPTION
--------------- --------------- ----------------------------------------
_undo_autotune TRUE enable auto tuning of undo_retention
该参数可以在线修改:
SQL> alter system set "_undo_autotune"=false;
System altered.