dbms_stats包分析表,no_invalidate参数有3个选项:
-
TRUE : 不让相关游标失效
-
FALSE: 立即让相关游标失效
-
AUTO_INVALIDATE(default):让Oracle自己决定何时让游标失效。
10G后如果不指定no_invalidate参数,默认的这个参数的值为DBMS_STATS.AUTO_INVALIDATE:让ORACLE决定与这个表相关的SQL何时失效。那么这个值到底是多少呢?是个固定的值还是ORACLE根据随机算法来让游标失效呢。答案是:根据_optimizer_invalidation_period 的值来决定游标失效的时间,默认是18000,单位是秒。
set linesize 120
col name for a30
col value for a20
col describ for a60
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.inst_id = USERENV ('Instance')
AND y.inst_id = USERENV ('Instance')
AND x.indx = y.indx
AND x.ksppinm LIKE '%&par%'
/
Enter value for par: invalidation_period
old 6: AND x.ksppinm LIKE '%&par%'
new 6: AND x.ksppinm LIKE '%invalida