Oracle自动统计信息的收集原理及实验
[日期:2014-11-21]
来源:Linux社区 作者:stevendbaguo
[字体:大 中 小]
从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息。这个自动任务默认情况下在工作日晚上10:00-6:00和周末全天开启。
调用DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC收集统计信息。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。收集的规则是user_tab_modifications中操作的记录数超过表的数量的10%就会自动收集。更多的信息看官方文档:http://docs.oracle.com/cd/B19306_01/server.102/b14211/stats.htm#sthref1068 。
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位 方法 http://www.linuxidc.com/Linux/2012-03/55759.htm
在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htm
Oracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htm
Debian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm
Oracle导入导出expdp IMPDP详解 http://www.linuxidc.com/Linux/2014-04/99932.htm
Oracle 10g expdp导出报错ORA-4031的解决方法 http://www.linuxidc.com/Linux/2014-04/99842.htm
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-11/109690.htm

Oracle自动统计信息的收集原理及实验的更多相关文章
- Oracle的自动统计信息不收集直方图的信息
Oracle的自动统计信息不收集直方图的信息 在oracle9i中,默认的统计信息收集是不收集直方图信息的,也就是说默认的MOTHOD_OPT模式为FOR ALL COLUMNS SIZE 1 在10 ...
- oracle自动统计信息
在11g中,默认自动收集统计信息的时间为晚上10点(周一到周五,4个小时),早上6点(周六,周日,20个小时), select a.window_name, a.repeat_interval,a ...
- [统计信息系列7] Oracle 11g的自动统计信息收集
(一)统计信息收集概述 在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集.SQL调优顾问.段空间调整顾问,查看方法如下: SQL> SELECT CLIENT_NAME,T ...
- oracle的统计信息的查看与收集
查看某个表的统计信息 SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'; Session altered. SQL&g ...
- 11g新特性-如何禁用自动统计信息收集作业
一.11g中auto stats gather job被集成到了auto task中. SQL> select client_name,status from DBA_AUTOTASK_CLIE ...
- oracle学习----统计信息
1.收集统计信息的方式 for all columns size skewonly BEGIN DBMS_STATS.GATHER_TABLE_STATS(ownname => ...
- Oracle 搜集统计信息
常用的统计信息收集脚本: 非分区表: BEGIN DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCOTT', ...
- Oracle Statistic 统计信息 小结
oraclestatisticstabledatabasesqldictionary 目录(?)[-] 直方图上列的信息说明 直方图类型说明 一. Statistic 说明 Oracle 官 ...
- Oracle 11G统计信息自动收集及调整
查询统计信息的收集所对应的task,以及当前状态 col CLIENT_NAME for a50col TASK_NAME for a20SELECT client_name, task_name, ...
随机推荐
- 开发BI系统时的需求分析研究
我们知道MIS,知道ERP,知道GIS等等,这些系统在管理限制上有很多的冲突,管理和被管理,开放和限制等等,然而BI在开始就不是这样的.BI要求的就是易用还要易于扩展,首先是报表,这个是你无条件的需要 ...
- Android UI 优化——使用HierarchyViewer工具
先说些题外话,希望路过的各位支持,博主有幸成为2013年度博客之星的候选人,期待你的一票,谢谢. 投票猛击: http://vote.blog.csdn.net/blogstaritem/blogst ...
- Android中项目中各个文件夹的含义和用途详解
1.src:存放所有的*.java源程序. 2.gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3.assets:可以存放项目一些较大的资源文件,例如:图片. ...
- KIS旗舰版常用数据表
select * from IC_Web2ERPOrders --网上订单 FOrderStatus 14--已发货,6--待发货,2--待配货,1--未审核 (审核后变为2,进入待配货)sele ...
- 用户无法进入SDSF,报NO GROUP ASSIGNMENT错误
注:命令行小写部分表出需要根据自己的情况改变!! a)激活SDSF资源类 SETROPTS CLASSACT(SDSF) b)查看SDSF资源类的PROFILE RLIST SDSF * c)如果不存 ...
- Spring MVC 3.x 基本配置
WEB-INF/web.xml 例1 <?xml version="1.0" encoding="UTF-8"?> <web-app xmln ...
- [Math] Beating the binary search algorithm – interpolation search, galloping search
From: http://blog.jobbole.com/73517/ 二分检索是查找有序数组最简单然而最有效的算法之一.现在的问题是,更复杂的算法能不能做的更好?我们先看一下其他方法. 有些情况下 ...
- JavaScript中的数组详解
JavaScript中的数组 一.数组的定义 数组是值的有序集合,或者说数组都是数据的有序列表. 二.创建数组 [字面量形式] 1.空数组 var arr=[]; 2.带有元素的数组 var arr= ...
- 更加优雅地配置Spring Securiy(使用Java配置和注解)
Spring Security 借助一系列Servlet Filter 来提供安全性功能,但是借助Spring的小技巧,我们只需要配置一个Filer就可以了,DelegatingFilterProxy ...
- Python入门笔记(22):Python函数(5):变量作用域与闭包
一.全局变量与局部变量 一个模块中,最高级别的变量有全局作用域. 全局变量一个特征就是:除非被删除,否则他们存活到脚本运行结束,且对于所有的函数都可访问. 当搜索一个标识符(也称变量.名字等),Pyt ...