10g R2的信息自动收集的疑问

[复制链接]
查看11 | 回复9 | 2006-4-17 13:46:34 | 显示全部楼层 |阅读模式
环境 HPUX
ORACLE10.2.0.3.0
我已经打开了10g的信息自动收集属性,也检查过statistics_level 参数是TYPICAL.
但是为什么很多很多自定义用户下面的表的last_analyzed的时间没有更新呢? 这些表明明有ddl操作啊。
SELECT table_name,last_analyzed FROM dba_tables WHERE table_name LIKE '%SAP%'
Table anme last_analyzed
FWSAP01
28/11/2008 22:00:06
自动收集应该是对所有用户,所有的表和索引进行收集的吧? 为什么我的数据库很多表的last_analyzed都没有变化呢?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
应该修改比超过15%才会收集
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
原帖由 jifei0611 于 2009-5-18 17:20 发表
应该修改比超过15%才会收集

如果没有记错的话,是10%
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
原帖由 tan9030 于 2009-5-18 16:37 发表
环境 HPUX
ORACLE10.2.0.3.0
我已经打开了10g的信息自动收集属性,也检查过statistics_level 参数是TYPICAL.
但是为什么很多很多自定义用户下面的表的last_analyzed的时间没有更新呢? 这些表明明有ddl操作啊。
SELECT table_name,last_analyzed FROM dba_tables WHERE table_name LIKE '%SAP%'
Table anme last_analyzed
FWSAP01
28/11/2008 22:00:06
自动收集应该是对所有用户,所有的表和索引进行收集的吧? 为什么我的数据库很多表的last_analyzed都没有变化呢?

不是,按照ORACLE文档的说法,只有变化率达10%(或以上的),才会收集统计.
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
原帖由 jifei0611 于 2009-5-18 17:20 发表
应该修改比超过15%才会收集

我最初以为只要发生ddl就会被统计收集信息, 我现在的一个应用从以前的30分钟,一下子增长到5个小时,还出现snapshot too old problem,除了数据量有增大,系统并没有其他的设定变化,不知道是不是没有及时地统计信息的原因。
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
1、查一下USER_TAB_MODIFICATIONS视图,看看数据变化的比例,超过10%就会自动收集。
2、查一下DBA_SCHEDULER_JOBS视图有无GATHER_STATS_JOB,确定JOB正常运行;
SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';
3、默认情况下,JOB的运行时间窗口是周一-周五22:00-06:00,周六、周日全天,确认这个时间段数据库是否开启。
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
原帖由 at. 于 2009-5-18 18:25 发表
1、查一下USER_TAB_MODIFICATIONS视图,看看数据变化的比例,超过10%就会自动收集。
2、查一下DBA_SCHEDULER_JOBS视图有无GATHER_STATS_JOB,确定JOB正常运行;
SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';
3、默认情况下,JOB的运行时间窗口是周一-周五22:00-06:00,周六、周日全天,确认这个时间段数据库是否开启。

请问如何看GATHER_STATS_JOB 是否正常运行?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
原帖由 at. 于 2009-5-18 18:25 发表
1、查一下USER_TAB_MODIFICATIONS视图,看看数据变化的比例,超过10%就会自动收集。
2、查一下DBA_SCHEDULER_JOBS视图有无GATHER_STATS_JOB,确定JOB正常运行;
SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'GATHER_STATS_JOB';
3、默认情况下,JOB的运行时间窗口是周一-周五22:00-06:00,周六、周日全天,确认这个时间段数据库是否开启。

USER_TAB_MODIFICATIONS 里面有记录update,insert,delete数量,但是如果计算变化比例?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
为啥我SELECT * FROM USER_TAB_MODIFICATIONS,却没有返回值?
回复

使用道具 举报

千问 | 2006-4-17 13:46:34 | 显示全部楼层
user_tab_modifications的刷新是有延时的,可以通过手工刷新;
exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
做了表分析以后,user_tab_modifications里面的信息就清除了;
变化比例应该是根据统计信息来估算的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行