Oracle 11g系统自己主动收集统计信息的一些知识「建议收藏」

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’);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115476.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 2022 3.2激活码[最新免费获取]「建议收藏」

    (idea 2022 3.2激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1M2OME2TZY-eyJsaWN…

    2022年3月13日
    152
  • Java Agent字节码增强技术实现链路追踪[通俗易懂]

    Java Agent字节码增强技术实现链路追踪[通俗易懂]javaagent

    2025年7月16日
    4
  • 企业级发卡网源码下载带代理系统授权搭建教程

    企业级发卡网源码下载带代理系统授权搭建教程  发卡网源码,英文名:Automaticshippingsourcecode,适用于构建在互联网上用于虚拟商品自动发货和交易的网购平台。往往根据用途和规模不同,分为:企业发卡网源码和个人发卡网源码,其核心功能为自动发货和自动收付款,类似于线下的无人售货机。  发卡网只适用于虚拟物品的交易,无法完成实物的交易,由于实物涉及快递时长,不符合发卡网方便快捷的特点。要想搭建一个运转良好的发卡网是需要做大量工作的,但最重要最基础的是搭建的发卡网源码稳定且bug少,不然很难提供频繁的发卡交易服务。 

    2022年7月14日
    37
  • 取两个列表的交集_js两个数组取差集

    取两个列表的交集_js两个数组取差集js没有直接的方式来获取两个列表的交集,需要自己写一个函数,如下:functionjiaoji(arr_1,arr_2){//先对arr_1进行一次深拷贝,防止对原两个列表造成影响 lettemp_list=$.extend([],arr_1) arr_1.forEach(function(value){//如果arr_1的元素不在arr_2中,那么去…

    2022年9月28日
    3
  • python中什么是pep_python技术应用认证证书有用吗

    python中什么是pep_python技术应用认证证书有用吗Python作为目前业界最受欢迎的语言,是大部分数据分析相关从业人员的一项必备技能。对于很多0基础的小白,经常会问的问题就是,如何快速学习Python。在这里给大家介绍一个Python入门级的考试:PCEP-30-01Exam。证书介绍PCEP-30-01是PythonInstitute资格认证的初级程序员考试,考试的全称是:PCEPCertifiedEntry-LevelPythonProgrammer这个考试并不需要有任何基础,是最入门级别的考试,对于从事数据分析的小伙伴们,这门考试只是

    2025年9月27日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号