今天主要分享下Oracle11g的新特性--Statistics Preferences,可以实现对指定对象进行信息收集。可以在table、schema、database、global级别设置statistics preference。
在11g中增加了三个选项:
1.publish 取值为true、false。 收集到的统计信息是否存到数据字典中。在10g中是自动存到数据字典中,即自动发布;在11g中可以先现将统计信息置于pending状态(这些统计信息被称为pending statistics),确认对性能有提升后再发布。
2.stale_percent 设置对象统计信息过期的阀值。自数据库统计对象收集后,对象中的行被修改的百分比超过该值就会被认为统计信息是过期的。
3.incremental 是否进行增量收集
SQL> select * from dba_tab_stat_prefs;
SQL> desc dba_tab_stat_prefs;
dbms_stats.set_database_prefs
dbms_stats.set_global_prefs procedure
dbms_stats.set_schema_prefs procedure
dbms_stats.set_table_prefs procedure
其中:
exec dbms_stats.set_table_prefs('SCOTT','DEPT','PUBLISH','TRUE');
select dbms_stats.get_prefs('PUBLISH','SCOTT','DEPT') get_prefs from dual;
select * from dba_tab_stat_prefs;
exec dbms_stats.set_table_prefs('SCOTT','DEPT','PUBLISH','FALSE');
select dbms_stats.get_prefs('PUBLISH','SCOTT','DEPT') get_prefs from dual;
select * from dba_tab_stat_prefs;
Displays the top-level global statistics preferences
SET SERVEROUTPUT ON
DECLARE
PROCEDURE display(p_param IN VARCHAR2) AS
l_result VARCHAR2(50);
BEGIN
l_result := DBMS_STATS.get_prefs (pname => p_param);
DBMS_OUTPUT.put_line(RPAD(p_param, 30, ' ') || ' : ' || l_result);
END;
BEGIN
display('AUTOSTATS_TARGET');
display('CASCADE');
display('DEGREE');
display('ESTIMATE_PERCENT');
display('METHOD_OPT');
display('NO_INVALIDATE');
display('GRANULARITY');
display('PUBLISH');
display('INCREMENTAL');
display('STALE_PERCENT');
END;
/
输出内容:
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~