zoukankan      html  css  js  c++  java
  • Oracle 11g系统自己主动收集统计信息的一些知识

        在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

    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.optimizer_stats = 'ENABLED';
    WINDOW_NAME          REPEAT_INTERVAL                                              DURATION
    -------------------- ------------------------------------------------------------ ---------------
    SUNDAY_WINDOW        freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0         +000 20:00:00
    FRIDAY_WINDOW        freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0        +000 04:00:00
    WEDNESDAY_WINDOW     freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0        +000 04:00:00
    SATURDAY_WINDOW      freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0         +000 20:00:00
    THURSDAY_WINDOW      freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0        +000 04:00:00
    TUESDAY_WINDOW       freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0        +000 04:00:00
    MONDAY_WINDOW        freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0        +000 04:00:00

    --禁用自己主动收集
    exec DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
    --启用自己主动收集
    exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
    --查看job

    select client_name,status from dba_autotask_client;

    CLIENT_NAME                                                      STATUS
    ---------------------------------------------------------------- --------
    auto optimizer stats collection                                  ENABLED
    auto space advisor                                               ENABLED
    sql tuning advisor                                               ENABLED

    --收集当前数据库下全部用户的统计信息
    exec dbms_stats.gather_database_stats(user);
    --收集当前数据库用户下全部对象的统计信息
    exec dbms_stats.gather_schema_stats(user);
    --收集数据字典的统计信息
    exec dbms_stats.gather_dictionary_stats();

    --当系统有非常大的分区表时,假设总是所有收集则会比較慢。11g之后能够设置INCREMENTAL仅仅对数据有变动的分区做收集

    exec dbms_stats.set_table_prefs(user,'table_name','INCREMENTAL','TRUE');--仅仅收集数据变动的分区

    exec dbms_stats.set_table_prefs(user,'table_name','INCREMENTAL','FALSE');--都要收集

    select dbms_stats.get_prefs('INCREMENTAL',null,'table_name') from dual;--查看分区表INCREMENTAL的值

    --获取global的统计信息收集设置选项
    select dbms_stats.get_prefs('method_opt') from dual;
    select dbms_stats.get_prefs('concurrent') from dual; 
    select dbms_stats.get_prefs('GRANULARITY') from dual;

    select dbms_stats.get_prefs('INCREMENTAL') from dual;
    --设置global的统计信息收集选项

    exec DBMS_STATS.SET_PARAM('DEGREE',4);

    exec DBMS_STATS.SET_PARAM('INCREMENTAL','TRUE');


  • 相关阅读:
    leetcode108 Convert Sorted Array to Binary Search Tree
    leetcode98 Validate Binary Search Tree
    leetcode103 Binary Tree Zigzag Level Order Traversal
    leetcode116 Populating Next Right Pointers in Each Node
    Python全栈之路Day15
    Python全栈之路Day11
    集群监控
    Python全栈之路Day10
    自动部署反向代理、web、nfs
    5.Scss的插值
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5352194.html
Copyright © 2011-2022 走看看