这是我的 Oracle 11g 系列的文章之一(这一篇没啥含量,算是笔记吧)。
在 11g 之前的版本中,DBMS_STATS 自动统计收集(Automatic Statistics Gathering)默认的阀值是 10%, 这个 10% 是不可以修改的。这对千变万化的企业数据库来说环境来说,有些死板,如果是个超大的表,默认的 10% 数据也是海量了,会把整个资源占死。Oracle 11g 中,这个属性可以通过修改 STALE_PERCENT 属性来修改, 有全局(DBMS_STATS.SET_GLOBAL_PREFS )和表级别(DBMS_STATS.SET_TABLE_PREFS)两种。
例子语句:
设定:SQL> exec dbms_stats.set_table_prefs(null,'EMP','STALE_PERCENT',1);
修改为 1%. 范围从 1-100.
恢复:
SQL> exec dbms_stats.set_table_prefs(null,'EMP','STALE_PERCENT',null);
查询:
SQL> select dbms_stats.get_prefs('STALE_PERCENT',null,'EMP') from dual;
虽然我很少用 DBMS_STATS 收集数据对象统计信息,不过它的有些用途还真的不错。
Refer: Metalink Note:390737.1
–EOF–
自动统计阀值修改是错的
改为:
自动统计阈值(threshold)修改