_optimizer_invalidation_period Rolling Cursor Invalidations

Oracle的DBMS_STATS包分析表时,no_invalidate参数影响游标失效策略。默认的AUTO_INVALIDATE由_optimizer_invalidation_period参数决定失效时间,默认18000秒。在特定场景下,DBA可能需要调整此参数以避免硬解析或即时更新执行计划。测试显示,10G和11G在达到阀值时表现不同,11G可能采取更复杂的失效策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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 '%invalidation_period%'  
  
NAME                           VALUE                DESCRIB  
--------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值