使用DBMS_STATS系统包中GATHER_TABLE_STATS方法,指定NO_INVALIDATE参数,可以在收集完统计信息后自动清理相关表的执行计划缓存:
DBMS_STATS.GATHER_TABLE_STATS(
ownname => ‘MRS_SYS’, --模式名
tabname => ‘TRADE_PRO’, --表名
ESTIMATE_PERCENT => 100, --收集统计信息比例
cascade => TRUE, --收集索引统计信息
method_opt => ‘FOR COLUMNS tradeId SIZE AUTO’, --收集粒度
degree => 1, --并行度
NO_INVALIDATE => FALSE --移除相关执行计划
);
其中NO_INVALIDATE参数缺省为TRUE,原有的执行计划保持原状态,FALSE为移除原有的相关执行计划。
另外stat 100 on的方式收集统计信息暂时没办法自动清理执行计划缓存,只能在收集完后手动清理。
文章
阅读量
获赞