从 Oracle 11g 开始,GATHER_STATS_JOB 不再有效,并已被“自动优化器统计信息收集”取代。
该作业应该在“维护窗口”期间运行,并收集已更改 10% 或更多的对象的统计信息,或具有过时的统计信息。如果这是真的,那么为什么当我运行查询检查“stale_stats='YES'”时,我仍然得到对象?
也许我不明白工作是如何执行的......
答案 0 :(得分:1)
两种广泛的可能性
随着表发生变化,Oracle 全天定期将 stale_statistics
中的 dba_tab_statistics
更新为“YES”。完全有可能的是,今天早上收集统计信息时,表格的更改量略低于阈值,而在今天进行了更多更改后,stale_stats
变为“是”。
根据作业运行时有多少对象具有过时的统计信息以及这些表包含多少数据、您的维护窗口有多大以及您的服务器有多强大,统计作业可能必须是在它可以重新收集所有陈旧的统计数据之前中止。如果作业被中止,该中止将被记录在作业历史中。如果发生这种情况是因为某天碰巧发生了大量更改(假设您运行了一个年度清除过程,该过程从数据库中的几乎每个表中删除了大量数据),那么陈旧的统计信息将在几个过程中更新持续数天的统计作业,直到作业赶上。