当前位置: 首页 > news >正文

【真实经验分享】PDB未按预期时间执行自动统计信息收集问题分析

问题描述

某客户发现一个问题,查看 dba_optstat_operations 发现2026-02-09 为周一但是 gather_database_stats (auto) 在2026-02-09 (02时,06时,10时,14时) 白天执行了4次自动统计信息收集

查看Scheduler windows显示周一的执行窗口开始时间为22时,总时长为4h,与我们查出来的实际执行时间不相符

下面我们将针对两个疑点进行解答:
问题1:为何每隔4小时多次运行自动统计信息收集?
问题2:2/9 为周一,按照Scheduler windows结果,周一的执行时间应为22时,为何在白天时间段运行?

分析:为何每隔4小时多次运行自动统计信息收集?

参考19c官方手册:
https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-automated-database-maintenance-tasks.html#GUID-BF691BB0-DC60-4829-A790-4C5BEB281FF1

官方手册里提到:如果维护窗口时长很长,则除Automatic SQL Tuning Advisor以外的所有自动维护任务都会每隔四小时重新开始运行。此功能可以确保维护任务定期运行,无论窗口的大小如何。
这里说明了为何会出现每4h执行一次统计信息收集

分析:2/9 为周一,按照Scheduler windows结果,周一的执行时间应为22时,为何在白天时间段运行?

参考官方文档:KB140350

官方文档中提到,由于在12c,18c,19c 中使用DBCA通用模板创建数据库时,CDB与PDB中Scheduler默认时区不同。
使用DBCA通用模板建库时无论CDB的Scheduler默认时区如何,在19c中PDB的Scheduler 默认时区为PST8PDT,这是Oracle预期行为。

查看环境中CDB$ROOT与PDB的Scheduler 默认时区果然不同

PRC时区与PST8PDT时区在非夏令时期间相差16h。
通过 dba_autotask_job_history 中的WINDOW_STATR_TIME 与 JOB_START_TIME的差异也可以看出 UTC 的2月11日14时对应的PST8PDT 2月10日 22时,两个时间确实相差16h

通过这个结论换算一下 UTC的2月9日2时、6时、10时、14时实际为PST8PDT的2月8日10时、14时、16时、20时,2月8日为周天,按照预期是在白天执行的自动统计信息收集,再结合前面得出的每4h跑一次scheduler的结论,换算后的执行时间完全符合预期

问题结论

问题1:为何每隔4小时多次运行自动统计信息收集?
解答:参考19c官方手册,如果维护窗口时长很长,则除Automatic SQL Tuning Advisor以外的所有自动维护任务都会每隔四小时重新开始运行。此为Oracle的预期行为。

问题2:2/9 为周一,按照Scheduler windows结果,周一的执行时间应为22时,为何在白天时间段运行?
解答:参考官方文档KB140350,2月9日周一白天运行自动统计信息收集任务的原因实际为CDB$ROOT Scheduler默认时区(PRC)比PDB Scheduler默认时区(PST8PDT)快16h导致的差异,PDB层面是按照PST8PDT的Scheduler时区执行的自动调度任务,也就是按照PST8PDT时区2月8日6时的周日调度任务,实际在北京时间2月8日22时开始执行,结合前一个结论间隔4小时运行一次,也会在2月9日2时、6时、10时、14时再调度一次。

解决方案

1.调整PDB的Scheduler默认时区与CDB$ROOT一致,若对生产无影响,不建议调整,以避免产生其他未知的问题

参考官方文档 KB139437

在PDB中执行

--查看PDB当前scheduler时区与时间戳selectdbms_scheduler.stimefromdual;--在PDB中修改Scheduler默认时区与CDB$ROOT一致execDBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE('default_timezone','PRC');--再次PDB查看当前scheduler时区与时间戳selectdbms_scheduler.stimefromdual;select*fromdba_scheduler_global_attributewhereATTRIBUTE_NAMElike'%TIMEZONE%';

2.后续使用DBCA通用模板创建数据库,请设置PDB Scheduler 的默认时区

http://www.jsqmd.com/news/937707/

相关文章:

  • 微信聊天记录永久保存终极指南:WeChatMsg开源工具完全教程
  • AI Agent:不是预测器,而是决胜市场的“决策操作系统”!提升信息处理、决策一致性,降低人为误差!
  • 基于Arduino与光敏电阻的智能感应装置:从传感器到执行器的IoT实践
  • AI时代的品牌罗盘:2026年国内三大GEO监测工具深度横评与选型指南
  • 【触想智能】工业安卓平板电脑在物流运输行业的应用特点与发展趋势
  • 终极B站广告跳过指南:小电视空降助手完整使用教程
  • 5分钟搞定洛雪音乐音源配置:免费音乐播放器的终极解决方案
  • 有支持多业务单位切换的ITSM平台吗?企业选型解析
  • W55RP20芯片 CircuitPython 实战 (1):快速完成静态IP联网测试
  • ESP8266串口通信与MicroPython开发实战指南
  • TypeScript 编程:实现 Fibonacci 序列与阶乘类型计算
  • 保姆级教程:用Docker容器一键部署Maven开发环境,彻底告别‘Command not found‘
  • 2026年在线SS分析仪十大品牌推荐|国产替代核心力量与选型实战全解析 - 液体流量液位品牌推荐
  • AI办公神器!用AI提升10倍效率,职场人必备!
  • LightGBM原理介绍
  • 一图理清对称加密 AEAD 为什么最怕 nonce 用错
  • PingFangSC字体包:跨平台字体一致性解决方案技术指南
  • 基于Arduino与光敏电阻的智能窗帘自动控制系统设计与实现
  • 3.3 Linux权限操作
  • 从“拼图式采购“到“全域闭环“:2026年GEO监测工具终极选型指南
  • 揭秘消息防撤回:如何永久保存微信QQ的消失对话
  • 2026年济南钻戒回收实用科普:素军奢品汇钻石回收闲置处置参考文稿 - GrowthUME
  • Sobel算子实战:用OpenCV 4.x给老旧照片‘描边’,实现一键卡通化/素描风效果
  • 去欧洲机票别再自己刷OTA了!武汉圣擎航空——您身边最靠谱的法国及全欧航线特价公务舱/头等舱专家(附全航线解析+售后保障) - 土星买买买
  • 告别阈值烦恼:用Halcon的MLP分类器搞定复杂场景下的颜色识别(附完整代码)
  • 用Python+灰色关联度分析,手把手教你量化低碳建筑全生命周期的碳排放(附代码)
  • Flutter跨小程序开发:如何用一套Dart代码征服微信小程序生态
  • 手把手教你学Simulink——双向 DC‑DC 变换器在恒压(CV)与恒流(CC)模式下的切换仿真
  • 肺部靶向 AAV 怎么选?如何解决靶向不精准、转导效率低的递送难题?
  • 类型体操实战:Promise.all 类型实现