环境:Oracle 11.2.0.3 RAC
问题:统计信息自动收集任务失效原因排查

  • 1.查看自动任务的状态
  • 2.进一步查看其它信息
  • 3.解决问题

1.查看自动任务的状态

查看自动任务的状态,确认是enabled状态:

SQL> select client_name,status from dba_autotask_client;CLIENT_NAME                                                      STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection                                  ENABLED
auto space advisor                                               ENABLED
sql tuning advisor                                               ENABLEDElapsed: 00:01:03.88

一般来说,这样的结果,就意味着统计信息自动收集是打开的,如今却是没有自动收集。说明确实是有故障,需要进一步深入排查。
若对这些自动任务的状态不理解可以参考之前文章:

  • Oracle的窗口和自动任务

2.进一步查看其它信息

根据 Why Auto Optimizer Statistics Collection May Appear to be "Stuck" and Not Running? (文档 ID 1320246.1)

排查以下项:

The 'auto optimizer stats collection' task is enabled in auto task
STATISTICS_LEVEL has already been set to TYPICAL or FULL
dba_autotask_client_history is empty
Statistics on tables are stale.
Some scheduler window is active and LAST_START_DATE is several days ago.

具体操作记录如下:

--STATISTICS_LEVEL:
SQL> show parameter STATISTICS_LEVEL NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
statistics_level                     string      TYPICAL--dba_autotask_client_history is empty:
SQL> select * from dba_autotask_client_history;no rows selectedElapsed: 00:01:04.79--Some scheduler window is active and LAST_START_DATE 是20-SEP-12 10.00.00.010777 PM
SELECT window_name, last_start_date, enabled, active FROM dba_scheduler_windows;
SQL> SELECT window_name ,2  last_start_date,3  enabled ,4  active5  FROM dba_scheduler_windows;WINDOW_NAME                    LAST_START_DATE                                                             ENABL ACTIV
------------------------------ --------------------------------------------------------------------------- ----- -----
MONDAY_WINDOW                  22-JAN-18 10.00.00.014299 PM PRC                                            TRUE  FALSE
TUESDAY_WINDOW                 23-JAN-18 10.00.01.076798 PM PRC                                            TRUE  FALSE
WEDNESDAY_WINDOW               24-JAN-18 10.00.00.055066 PM PRC                                            TRUE  FALSE
THURSDAY_WINDOW                20-SEP-12 10.00.00.010777 PM PRC                                            TRUE  TRUE
FRIDAY_WINDOW                  26-JAN-18 10.00.00.725176 PM PRC                                            TRUE  FALSE
SATURDAY_WINDOW                27-JAN-18 06.00.00.010751 AM PRC                                            TRUE  FALSE
SUNDAY_WINDOW                  28-JAN-18 06.00.00.593207 AM PRC                                            TRUE  FALSE
WEEKNIGHT_WINDOW                                                                                           FALSE FALSE
WEEKEND_WINDOW                                                                                             FALSE FALSE9 rows selected.Elapsed: 00:00:00.01

可以看到,如今的环境确实完全匹配文档列出的这些特征项。
另外,看下统计信息自动收集任务的WINDOW_GROUP以及对应的MEMBER_NAME:

SQL> select client_name,window_group2  from DBA_AUTOTASK_CLIENT3  where client_name = 'auto optimizer stats collection';CLIENT_NAME                                                      WINDOW_GROUP
---------------------------------------------------------------- ----------------------------------------------------------------
auto optimizer stats collection                                  ORA$AT_WGRP_OSElapsed: 00:01:05.39
SQL> SELECT * FROM dba_scheduler_group_members2  where group_name='ORA$AT_WGRP_OS';OWNER                          GROUP_NAME                     MEMBER_NAME
------------------------------ ------------------------------ -----------------------------------------------------------------------------------------------------------------------------------
SYS                            ORA$AT_WGRP_OS                 "SYS"."MONDAY_WINDOW"
SYS                            ORA$AT_WGRP_OS                 "SYS"."TUESDAY_WINDOW"
SYS                            ORA$AT_WGRP_OS                 "SYS"."WEDNESDAY_WINDOW"
SYS                            ORA$AT_WGRP_OS                 "SYS"."THURSDAY_WINDOW"
SYS                            ORA$AT_WGRP_OS                 "SYS"."FRIDAY_WINDOW"
SYS                            ORA$AT_WGRP_OS                 "SYS"."SATURDAY_WINDOW"
SYS                            ORA$AT_WGRP_OS                 "SYS"."SUNDAY_WINDOW"7 rows selected.Elapsed: 00:00:00.04

可以看到,正常应该是一周7天都有的,但是由于THURSDAY_WINDOW 的窗口ACTIVE是TRUE,导致2012年9月27号(周四)统计信息收集失败。根据MOS描述,会影响其后的窗口都打开失败,进而导致之后所有自动任务的执行都失败。
我实际在我的测试环境验证也是如此,现象如下:

SQL> SELECT window_name, last_start_date, enabled, active FROM dba_scheduler_windows;WINDOW_NAME                                                  LAST_START_DATE                                                             ENABLED    ACTIVE
------------------------------------------------------------ --------------------------------------------------------------------------- ---------- ----------
MONDAY_WINDOW                                                22-JAN-18 10.00.00.011111 PM EST5EDT                                        TRUE       FALSE
TUESDAY_WINDOW                                               23-JAN-18 10.22.54.068776 PM EST5EDT                                        TRUE       FALSE
WEDNESDAY_WINDOW                                             24-JAN-18 10.00.00.005654 PM EST5EDT                                        TRUE       FALSE
THURSDAY_WINDOW                                              25-JAN-18 10.00.00.009885 PM EST5EDT                                        TRUE       FALSE
FRIDAY_WINDOW                                                26-JAN-18 10.00.00.010077 PM EST5EDT                                        TRUE       FALSE
SATURDAY_WINDOW                                              27-JAN-18 05.00.00.004156 PM EST5EDT                                        TRUE       FALSE
SUNDAY_WINDOW                                                28-JAN-18 01.00.00.010044 PM EST5EDT                                        TRUE       TRUE
WEEKNIGHT_WINDOW                                                                                                                         FALSE      FALSE
WEEKEND_WINDOW                                                                                                                           FALSE      FALSE9 rows selected.SQL> EXECUTE DBMS_SCHEDULER.OPEN_WINDOW ('MONDAY_WINDOW','');
BEGIN DBMS_SCHEDULER.OPEN_WINDOW ('MONDAY_WINDOW',''); END;*
ERROR at line 1:
ORA-27480: window "SUNDAY_WINDOW" is currently open
ORA-06512: at "SYS.DBMS_ISCHED", line 493
ORA-06512: at "SYS.DBMS_SCHEDULER", line 1220
ORA-06512: at line 1SQL> 

可以看到我测试环境,因为周日的窗口已经是ACTIVE,再尝试打开周一的窗口就会报错,看起来同时就只能有一个窗口ACTIVE,这与MOS的描述也完全一致。

3.解决问题

根据MOS解决建议手工关闭活动的窗口,我这里就是关闭THURSDAY_WINDOW窗口:

SQL> EXECUTE DBMS_SCHEDULER.CLOSE_WINDOW ('THURSDAY_WINDOW');PL/SQL procedure successfully completed.Elapsed: 00:00:00.14

再次查询状态,确认窗口状态已关闭:

SQL> SELECT window_name ,2  last_start_date,3  enabled ,4  active5  FROM dba_scheduler_windows;WINDOW_NAME                    LAST_START_DATE                                                             ENABL ACTIV
------------------------------ --------------------------------------------------------------------------- ----- -----
MONDAY_WINDOW                  22-JAN-18 10.00.00.014299 PM PRC                                            TRUE  FALSE
TUESDAY_WINDOW                 23-JAN-18 10.00.01.076798 PM PRC                                            TRUE  FALSE
WEDNESDAY_WINDOW               24-JAN-18 10.00.00.055066 PM PRC                                            TRUE  FALSE
THURSDAY_WINDOW                20-SEP-12 10.00.00.010777 PM PRC                                            TRUE  FALSE
FRIDAY_WINDOW                  26-JAN-18 10.00.00.725176 PM PRC                                            TRUE  FALSE
SATURDAY_WINDOW                27-JAN-18 06.00.00.010751 AM PRC                                            TRUE  FALSE
SUNDAY_WINDOW                  28-JAN-18 06.00.00.593207 AM PRC                                            TRUE  FALSE
WEEKNIGHT_WINDOW                                                                                           FALSE FALSE
WEEKEND_WINDOW                                                                                             FALSE FALSE9 rows selected.

这样就找到了问题,另外因为离统计信息信息自动收集关闭已有多年,目前生产环境运行平稳,所以最终决定保守处理,即:先将生产环境的自动任务都关闭,等在备库测试验证后再考虑生产环境开启自动任务。

Reference

  • Why Auto Optimizer Statistics Collection May Appear to be "Stuck" and Not Running? (文档 ID 1320246.1)

统计信息自动收集任务失效原因排查相关推荐

  1. Oracle11g 统计信息——统计信息自动收集任务

    背景: 在使用cacti监控oracle数据库IO的时候发现每天晚上10点钟的时候oracle数据库读写明显增加,如下图所示: 对这个问题,后来查了一下是因为oracle在运行一个信息自动收集任务.o ...

  2. 统计信息自动更新导致查询超时

    数据库有个大的接口日志表InterfaceRecord,表中有XML字段保存了接口报文,每个月新增6000多万的数据(大约300多GB),数据库有个JOB每周日晚上定时把表中1个月前的数据归档到历史库 ...

  3. mysql统计信息表行数不准确_mysql SQL调优-统计信息不准的原因

    问题现象: 开发报告查询语句突然变慢. 处理过程: 1.在从库查看执行计划: 并且执行查询,结果是返回159条数据,只需要0.58秒,并不慢 (2)了解到原来应用连接的是主库,随即上主库查看执行计划, ...

  4. 统计信息:SQL执行优化之密钥

    SQL 执行的指导思想是什么? SQL 执行计划的正确依赖选择依赖于什么?统计信息为什么在 SQL 执行中起到关键性的作用?如何才能自动化收集统计信息?让 一起了解 SQL 执行优化的核心底座. 统计 ...

  5. SQL Server 统计信息更新时采样百分比对数据预估准确性的影响

    为什么要写统计信息 最近看到园子里有人写统计信息,楼主也来凑热闹. 话说经常做数据库的,尤其是做开发的或者优化的,统计信息造成的性能问题应该说是司空见惯. 当然解决办法也并非一成不变,"一招 ...

  6. Always On可用性组中SQL Server统计信息

    SQL Server统计信息简介 (Introduction to SQL Server Statistics) SQL Server Statistics are an essential part ...

  7. oracle优化器统计信息相关

    优化器使用统计信息来生成每个sql语句最优的执行计划.准确的统计信息对于数据库的效率至关重要. dba和程序开发人员都应该了解一些统计信息相关知识,这可以使你更好的理解为什么会生成一个你看到的执行计划 ...

  8. TiDB 优化之消失的统计信息

    优化慢SQL是每一个DBA都不可避免的一项职责,而慢SQL很多都是系统响应时间长的罪魁祸首,而优化慢SQL的执行效率也受到统计信息过期的影响. 统计信息是指数据库描述表或者索引数据特征的信息,常见的有 ...

  9. 管好统计信息,开启SQL优化之门

    遇到执行效率低下的SQL语句,对于DBA而言无疑是家常便饭了,但如何快速优化,把它变成小菜一碟,则得看看咱们DBA+社群联合发起人卢飞的经验之谈了. 专家简介 卢飞 DBA+社群联合发起人 Oracl ...

最新文章

  1. CIA困局:天下再无007,AI识别下无处遁行的“特工”们
  2. “优秀IT工程师”是什么样的?
  3. hough变换检测圆周_【视觉】视觉检测人应该了解的缺陷检测方法
  4. TMG2010发布web服务器
  5. html:(28):后代选择器和通用选择器
  6. 万物互联、应用现代化、云原生新范式,华为云为数字化转型提供最优解
  7. 谜题27:变幻莫测的i值
  8. mui 中template 的使用
  9. 频谱感知4:CCS硬合并中m-out-of-K准则下m与K的联合优化问题
  10. springboot + mybatis-plus + quaryz 数据库持久化任务调度
  11. 方剂学(综合练习)题库【2】
  12. 微信开发服务器端口号,微信公众号开发步骤
  13. 【DP】饥饿的WZK(hunger)
  14. 【机器学习】完整的机器学习项目演练:第一部分
  15. 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告...
  16. 从今以后我一个人唱悲伤情歌:伤感的QQ空间日志
  17. 生物信息-学习从NCBI上下载数据
  18. 【Fiddle】The Fiddler AutoResponder is enabled, but this request did not match any of the listed rules
  19. WLAN@Wi-Fi
  20. r语言中判断属于回纹元素_R语言中的回归诊断-- car包

热门文章

  1. php获取当前系统配置文件,thinkphp5.1+配置文件结构及获取
  2. 团队行为心理学读书笔记(8)绩效考核背后的行为心理学
  3. 卡通驱动项目ThreeDPoseTracker——关键点平滑方案解析
  4. BBC:乐在其中统计学 (2010)
  5. vscode编辑器,自己喜欢的颜色
  6. OpenStack Telemetry系统架构及实践
  7. MSN8.0经常出现连接错误,如何解决?
  8. 如何在PowerDesigner将PDM导出生成WORD文档或者html文件
  9. Apache Directory 指令
  10. 微信分享无响应的解决