在11g之前,当表的数据量修改超过总数据量的10%,就会晚上自动收集统计信息,如何判断10%,之前的帖子有研究过:Oracle自动统计信息的收集原理及实验。这个STALE_PERCENT=10%,是无法修改的,如果表非常大,10%是非常多的数据,非常有可能造成统计信息不准确。
在11g之后,STALE_PERCENT=10%是可以修改的,分为全局(DBMS_STATS.SET_GLOBAL_PREFS )和表级别(DBMS_STATS.SET_TABLE_PREFS)。表级别的设定:
修改为5%(范围从1-100): exec dbms_stats.set_table_prefs(null,'table_name','STALE_PERCENT',5);
恢复为10%: exec dbms_stats.set_table_prefs(null,'table_name','STALE_PERCENT',null);
查询百分比:select dbms_stats.get_prefs('STALE_PERCENT',null,'table_name') from dual;
---11g的是 周一到周五 22:00-2:00 周六周日 6:00-4:00
SQL> col REPEAT_INTERVAL format a50
SQL> SELECT w.window_name, w.repeat_interval, w.duration, w.enabled
FROM dba_autotask_window_clients c, dba_scheduler_windows w
WHERE c.window_name = w.window_name
AND c.
11g 关于自动搜集统计信息
最新推荐文章于 2023-12-08 20:29:46 发布