博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle自动统计信息的收集原理及实验
阅读量:6443 次
发布时间:2019-06-23

本文共 2243 字,大约阅读时间需要 7 分钟。

 

[日期:2014-11-21]

来源:Linux社区  作者:stevendbaguo
[字体: ]

       从 Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。

        调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。收集的规则是user_tab_modifications中操作的记录数超过表的数量的10%就会自动收集。更多的信息看官方文档:  。

      user_tab_modifications表中有inserts,updates,deletes,意思是修改了多少行数据,下面我们来做一个实验:

SQL> create table test as select * from dba_objects;

SQL> select table_name,inserts,updates,deletes,timestamp

      from user_tab_modifications where table_name='TEST';
未选定行

SQL> exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL 过程已成功完成。

SQL> select table_name,inserts,updates,deletes,timestamp

      from user_tab_modifications where table_name='TEST';
未选定行

SQL> exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL 过程已成功完成。

SQL> select table_name,inserts,updates,deletes,timestamp

      from user_tab_modifications where table_name='TEST';
未选定行

SQL> exec dbms_stats.gather_table_stats(user,'TEST');

PL/SQL 过程已成功完成。

SQL> select table_name,inserts,updates,deletes,timestamp

      from user_tab_modifications where table_name='TEST';
未选定行

SQL> delete from test where rownum <=10000;

已删除10000行。
SQL> commit;
提交完成。

SQL> select table_name,inserts,updates,deletes,timestamp

      from user_tab_modifications where table_name='TEST';
未选定行

SQL> exec dbms_stats.FLUSH_DATABASE_MONITORING_INFO;

PL/SQL 过程已成功完成。

SQL> select table_name,inserts,updates,deletes,timestamp

      from user_tab_modifications where table_name='TEST';
TABLE_NAME                        INSERTS    UPDATES    DELETES TIMESTAMP
------------------------------ ---------- ---------- ---------- --------------
TEST                                    0          0    1000012-7月 -13

另外:

    关闭自动统计信息命令,exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');

    启用自动统计信息命令,exec DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');

    查看自动统计信息是否开启,

    oracle 10g :SELECT OWNER,JOB_NAME,ENABLED FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';

    oracle 11g :select t1.owner, t1.job_name, t1.enabled  from dba_scheduler_jobs t1  where t1.job_name = 'BSLN_MAINTAIN_STATS_JOB';

Oracle 单实例 从32位 迁移到 64位 方法 

在 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

Oracle导入导出expdp IMPDP详解

Oracle 10g expdp导出报错ORA-4031的解决方法

更多Oracle相关信息见 专题页面

本文永久更新链接地址

转载于:https://www.cnblogs.com/snailwong/p/5904066.html

你可能感兴趣的文章
XML模块
查看>>
编写自动化测试用例的原则
查看>>
poj2955(区间dp)
查看>>
突然多了个机会…纠结了一个星期。
查看>>
SAP QUERY
查看>>
MIGO收货 BAPI :BAPI_GOODSMVT_CREATE BADI增强
查看>>
【windows中常用的服务概览和总结】
查看>>
3.插入排序--直接插入排序
查看>>
UVA1584 UVALive3225 Circular Sequence
查看>>
StringBuffer
查看>>
Per-Pixel Lighting
查看>>
外部中断
查看>>
html的dtd声明
查看>>
ivy resolve标签
查看>>
.NET Web后台动态加载Css、JS 文件,换肤方案
查看>>
使用开源软件vlc media player 录制桌面视频
查看>>
web前端(2)—— 前端技术介绍
查看>>
ife2018 零基础学院 day 3
查看>>
Kali Linux信息收集之nbtscan-unixwiz
查看>>
hdu 5476 (计算几何)
查看>>