`
itspace
  • 浏览: 978665 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

简单介绍ORACLE自动统计CBO统计信息

阅读更多
Oracle 10g隆重推出了自动统计CBO统计功能,但实际使用起来却是鸡肋,bug一大堆。现简单介绍一下。
1、查看GATHER_STATS_JOB执行情况
select JOB_NAME,LAST_START_DATE,ENABLED,state from dba_scheduler_jobs;
引用
JOB_NAME                       LAST_START_DATE                          ENABL STATE
------------------------------ ---------------------------------------- ----- ----------
PURGE_LOG                      20-MAR-10 03.00.00.150147 AM PST8PDT     TRUE  SCHEDULED
FGR$AUTOPURGE_JOB                                                       FALSE DISABLED
GATHER_STATS_JOB               20-MAR-10 06.00.04.025944 AM +08:00      TRUE  SCHEDULED
AUTO_SPACE_ADVISOR_JOB         20-MAR-10 06.00.04.025793 AM +08:00      TRUE  SCHEDULED
RLM$EVTCLEANUP                 21-MAR-10 02.09.59.099412 AM -07:00      TRUE  SCHEDULED
RLM$SCHDNEGACTION              21-MAR-10 04.26.59.146700 PM +08:00      TRUE  SCHEDULED

6 rows selected.

可以看到GATHER_STATS_JOB在3月20日6点自动被调度执行。
查看调度脚本
引用
SQL> SELECT program_action, number_of_arguments, enabled
  2  FROM dba_scheduler_programs
  3  WHERE owner = 'SYS'
  4  AND program_name = 'GATHER_STATS_PROG';

PROGRAM_ACTION
--------------------------------------------------------------------------------

NUMBER_OF_ARGUMENTS ENABL
------------------- -----
dbms_stats.gather_database_stats_job_proc
                  0 TRUE

查看调度窗口
引用
SQL> SELECT w.window_name, w.repeat_interval, w.duration, w.enabled
  2  FROM dba_scheduler_wingroup_members m, dba_scheduler_windows w
  3  WHERE m.window_name = w.window_name
  4  AND m.window_group_name = 'MAINTENANCE_WINDOW_GROUP';

WINDOW_NAME
------------------------------
REPEAT_INTERVAL
--------------------------------------------------------------------------------

DURATION
---------------------------------------------------------------------------
ENABL
-----
WEEKNIGHT_WINDOW
freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=22;byminute=0; bysecond=0
+000 08:00:00
TRUE


WINDOW_NAME
------------------------------
REPEAT_INTERVAL
--------------------------------------------------------------------------------

DURATION
---------------------------------------------------------------------------
ENABL
-----
WEEKEND_WINDOW
freq=daily;byday=SAT;byhour=0;byminute=0;bysecond=0
+002 00:00:00
TRUE


进一步可以查出数据库统计的历史信息
引用
SQL> SELECT operation, start_time,
  2  (end_time-start_time) DAY(1) TO SECOND(0) AS duration
  3  FROM dba_optstat_operations
  4  ORDER BY start_time DESC;

OPERATION
----------------------------------------------------------------
START_TIME
---------------------------------------------------------------------------
DURATION
---------------------------------------------------------------------------
gather_database_stats(auto)
18-6月 -10 05.57.02.501000 下午 +08:00
+0 00:00:04

2、GATHER_STATS_JOB存在诸多bug,很多情况下需要关闭自动收集CBO统计信息
引用
SQL> exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');

PL/SQL procedure successfully completed.

可以看到该job已经被禁用了
引用
SQL> select ENABLED,state from dba_scheduler_jobs where job_name='GATHER_STATS_JOB';

ENABL STATE
----- ----------
FALSE DISABLED

或者更改隐含参数,注意更改隐含参数存在风险,不建议在生产系统上实施。

引用
SQL> alter system set "_optimizer_autostats_job"=false scope=spfile;

System altered.


更多关于GATHER_STATS_JOB信息可以查看metalink。


1
0
分享到:
评论

相关推荐

    oracle 11g 统计信息

    为了确保统计信息的准确性和时效性,Oracle 11g引入了一个名为DBMS_STATS的新包,并提供了一种称为“自动统计信息收集”的机制,该机制可以在预定的时间自动运行。 #### 自动统计信息收集的时间安排 根据题目中的...

    ORACLE 数据库的统计数据及优化

    - **estimate_percent选项**:控制统计样本的百分比,使用`estimate_percent => dbms_stats.auto_sample_size`可以让Oracle自动选择最佳样本百分比。一般情况下,Oracle会选择5%至20%之间的样本比例,以确保统计数据...

    【Maclean Liu技术分享】拨开Oracle CBO优化器迷雾,探究Histogram直方图之秘_0321.pdf

    - **DBMS_STATS.AUTO_SAMPLE_SIZE**:这是一个非常重要的参数,用于指定自动统计信息收集过程中的样本大小。默认情况下,Oracle首先采集5500行数据作为样本,如果评估认为这些样本不足以代表整个数据集,则会继续...

    oracle CBO HINT

    Oracle的Cost-Based Optimizer (CBO) 是一种自动选择最优执行计划的机制,它通过评估不同执行路径的成本来决定如何执行SQL查询。CBO会考虑各种因素,包括表的大小、索引的存在、数据分布等,以确定最有效率的查询...

    CBO,RBO在ORACLE中的应用

    CBO的主要特点是基于数据的统计信息来决定执行计划,这包括表和索引的分析结果。使用CBO时,开发者无需过于关注FROM子句中表的顺序或WHERE子句中条件的顺序,因为CBO会自动计算成本最低的执行路径。CBO能够利用如...

    cbo数据库优化

    分析工具会自动生成更新统计信息的SQL脚本。你可以选择立即执行这些脚本,或者将其保存下来,以便在需要时手动执行。脚本可能包括`ANALYZE TABLE`或`ANALYZE INDEX`等命令,用于收集和更新对象的统计信息。 6. **...

    oracle9i优化器介绍

    CBO统计信息的准确性和完整性直接影响着优化器的决策质量。Oracle推荐使用DBMS_STATS包收集统计信息,因为它支持并行收集、分区对象的全局统计信息收集,以及其他优化收集操作的方式。然而,对于与成本优化器无关的...

    Oracle的优化器(Optimizer)

    - **定义**:CBO是从Oracle 8i开始引入的一种新的优化方式,它基于对表和索引的统计信息来评估执行计划的成本。 - **特点**: - 更加智能,能够根据实际数据情况动态选择最佳执行计划。 - 需要定期更新表和索引...

    Oracle优化器模式与Oracle索引优化规则.pptx

    从Oracle Database 10g开始,系统会自动创建GATHER_STATS_JOB任务来定期收集统计信息。 Oracle索引是提升查询速度的关键结构,它由根节点、分支节点和叶子节点构成。根节点指向分支节点,分支节点再指向叶子节点,...

    ORACLE SQL性能优化

    ORACLE SQL性能优化 通过init.ora文件中OPTIMIZER_MODE声明 RULE (基于规则) 所遵循的是Oracle内部...如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁盘中去读取。 init.ora中为这个区域设置合适的参数

    Oracle更新分析

    Oracle提供了`dbms_stats.auto_sample_size`来自动计算合适的采样比例,确保统计信息既准确又不会因为全表扫描而消耗过多资源。 #### 五、`degree`参数 用于设置并行度。通过增加这个值可以加快统计信息的收集速度...

    Oracle9i优化器介绍

    这些统计信息通过DBA或开发人员使用DBMS_STATS包手动收集,或者在DML操作后自动更新。 3. 执行计划: 优化器分析查询的语法树,生成可能的执行计划,然后评估每个计划的成本。最终,选择成本最低的计划作为最优...

    oracle内存管理,深入浅出oracle内存管理,盖国强oracleppt

    CBO根据统计信息和成本估算来选择执行计划,而RBO则基于预定义的规则。现代Oracle系统默认使用CBO,因为它的优化效果通常更佳。 理解Oracle内存管理的这些核心概念,对于监控、调整和优化数据库性能至关重要。通过...

    Oracle优化.ppt

    从 Oracle Database 10g 开始,Oracle 在建库后就默认创建了一个名为 GATHER_STATS_JOB 的定时任务,用于自动收集 CBO 的统计信息,调用 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC 收集统计信息。默认情况下在工作...

Global site tag (gtag.js) - Google Analytics