适用于:
Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本本文档所含信息适用于所有平台
目标
本文旨在解释 Oracle 12C 是否自动收集扩展统计信息?
解决方案
是的。
从 Oracle 12c 开始,列组统计信息作为自适应查询优化的一部分被自动创建。关于这方面的补充信息,以及其它自适应查询优化的功能,请参照 12C 白皮书 What to expect from 12c 。
自适应查询优化的所有功能,可以使用 OPTIMIZER_ADAPTIVE_FEATURES 参数禁用。这个参数可以从系统或会话级别禁用:
SQL> alter system set OPTIMIZER_ADAPTIVE_FEATURES=false;
or
SQL> alter session set OPTIMIZER_ADAPTIVE_FEATURES=false;
但是,现在客户可以打小补丁Patch#21171382,它会在DBMS_STATS包中增加一个AUTO_STAT_EXTENSIONS的选项。 这个补丁只能打在12c版本上,并且已经包含在12.2中。 这个补丁在DBMS_STATS包中增加了一个AUTO_STAT_EXTENSIONS的选项,可以关闭自动收集扩展统计信息的功能。这个参数可以控制是否在自动/手工收集统计信息时创建扩展统计信息,它可以被设置为:
ON: 根据列在谓语中的使用情况,在收集统计信息时自动收集扩展统计信息。
OFF: 扩展统计信息并不会自动被收集。在使用create_extended_stats API时或者在method_opt显式指定收集扩展统计信息时才会被收集。默认值为OFF。
标准的优化器统计信息仍然需要手动或通过自动调度收集。参考: