oracle 表的统计信息,跟他的执行计划颇有关联数据库
执行计划的正常是否,跟SQL的执行速度颇有关系oracle
首先讲解一下如何查看一个数据库的是否开启自动统计分析对象
一、查看参数:STATISTICS_LEVEL(在V$PARAMETER表中查看数据的状况),10g中默认为typical,只有将STATISTICS_LEVEL参数设置为ALL或者typical才能让ORACLE识别过时的统计信息。内存
二、自动表分析天天晚上10开始,那说明应该是JOB定时在处理,自动统计分析的JOB是:GATHER_STATS_JOB。监控
每一个对象都有相应的属性,JOB相应的属性记录在DBA_SCHEDULER_JOBS这个字典中。统计
在DBA_SCHEDULER_JOBS这个视图中特别须要关注的,enabled这个字段,TRUE:表示启用,FALSE: 表示关闭数据
三、查看天天JOB的执行状况查询
经过查看DBA_SCHEDULER_JOB_RUN_DETAILS这个视图,能够观察自动表分析的JOB有没有执行过 GATHER_STATS_JOB字典
如何开启自动统计信息收集参数
一、修改参数值
alter system set STATISTICS_LEVEL=typical;
二、启动GATHER_STATS_JOB这个JOB
BEGIN
DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
END;
如何关闭统计信息
一、修改参数值
alter system set STATISTICS_LEVEL=basic;
二、关闭GATHER_STATS_JOB这个JOB
BEGIN
DBMS_SCHEDULER.ENABLED('GATHER_STATS_JOB');
END;
监控数据的变化程度,关于增、删、改数据的变化量
记录在DBA_TAB_MODIFICATIONS视图里面。咱们在查询DBA_TAB_MODIFICATIONS视图的时候有可能查询不到结果,或者查询的结果不许确,这个时候须要用DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO过程将内存中的信息刷新到该视图中