关于Oracle 11g维修窗口?请大神详解?

aichitudou 2018-02-05 04:11:12
Oracle 11g 的维修窗口时间段内,会自动收集为查询优化器使用的统计信息。
Automatic Optimizer Statistics Collection:
该维修窗口默认周一到周五,每天晚上10点执行,持续4小时;周六到周日,早上6点开始,持续20小时。
在维修窗口期间会造成业务系统的数据库查询操作和修改操所,全部阻塞挂起。
目前已统一将维修窗口时间段调整为每天凌晨3点,持续2小时;但因为业务系统24小时都有人使用,所以想进步一减少维修窗口期间数据阻塞对业务系统的影响,就有下面几个问题。请高手回答下!

有如下几个问题:
1、为什么会阻塞,维修窗口干的上面事情会造成相关操作阻塞?
2、该数据统计信息任务关闭的话,对业务系统的性能有何影响?
3、如果不关闭数据统计信息任务,如何减少其对业务系统的影响?

请Oracle高手指导,多谢!
...全文
743 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu志坚 2018-02-06
  • 打赏
  • 举报
回复
http://blog.csdn.net/liuzhijian2008x/article/details/79267814 卡的时候你参考我博客的监控下什么等待事件了。
minsic78 2018-02-06
  • 打赏
  • 举报
回复
另外,所谓的“该查询语句的执行效率实际只有1ms,耗费也只有1,磁盘也只有几个字节”,很可能就是统计信息有问题导致的,实际上并不是,
minsic78 2018-02-06
  • 打赏
  • 举报
回复
引用 4 楼 aichitudou 的回复:
[quote=引用 1 楼 liuzhijian2008x 的回复:] 1、为什么会阻塞,维修窗口干的上面事情会造成相关操作阻塞? 不会阻塞。表收集统计信息的时候 增删改查甚至加字段,删字段 都不会被阻塞。只是收集统计信息的时候比较占IO,所以一般都是配置数据库闲时跑维护任务。 2、该数据统计信息任务关闭的话,对业务系统的性能有何影响? oracle 现在是CBO 优化器对sql进行优化,依靠收集的统计信息分析得出最优的执行计划。如果你把统计信息的维护任务关闭了,业务表的统计信息都是过时的不准确的,cbo得出的执行计划就不会是最优的。比如该走索引的,执行计划走成全表了,sql性能自然会受影响。 3、如果不关闭数据统计信息任务,如何减少其对业务系统的影响? 统计信息任务还是有必要打开的。调到业务闲事执行就好了。
实际情况是,维修窗口期间,会出现查询卡住的情况;等维修窗口时间一过,又自动恢复了。 可能什么会引起卡住。 该查询语句的执行效率实际只有1ms,耗费也只有1,磁盘也只有几个字节。如何解释?[/quote] 1、看看操作系统层面,是不是资源吃紧; 2、看看你卡住的语句到底是什么样的语句,执行计划如何; 3、当你的语句卡住的时候,查查它的等待事件 提供这些信息再做进一步调查
liu志坚 2018-02-06
  • 打赏
  • 举报
回复
引用 4 楼 aichitudou 的回复:
[quote=引用 1 楼 liuzhijian2008x 的回复:] 1、为什么会阻塞,维修窗口干的上面事情会造成相关操作阻塞? 不会阻塞。表收集统计信息的时候 增删改查甚至加字段,删字段 都不会被阻塞。只是收集统计信息的时候比较占IO,所以一般都是配置数据库闲时跑维护任务。 2、该数据统计信息任务关闭的话,对业务系统的性能有何影响? oracle 现在是CBO 优化器对sql进行优化,依靠收集的统计信息分析得出最优的执行计划。如果你把统计信息的维护任务关闭了,业务表的统计信息都是过时的不准确的,cbo得出的执行计划就不会是最优的。比如该走索引的,执行计划走成全表了,sql性能自然会受影响。 3、如果不关闭数据统计信息任务,如何减少其对业务系统的影响? 统计信息任务还是有必要打开的。调到业务闲事执行就好了。
实际情况是,维修窗口期间,会出现查询卡住的情况;等维修窗口时间一过,又自动恢复了。 可能什么会引起卡住。 该查询语句的执行效率实际只有1ms,耗费也只有1,磁盘也只有几个字节。如何解释?[/quote] 你从哪看到的耗费只有1,磁盘几个字节这些信息呢?执行计划中? 如果卡住的话,监控下该会话在等什么等待事件,再具体分析了。
aichitudou 2018-02-06
  • 打赏
  • 举报
回复
引用 1 楼 liuzhijian2008x 的回复:
1、为什么会阻塞,维修窗口干的上面事情会造成相关操作阻塞? 不会阻塞。表收集统计信息的时候 增删改查甚至加字段,删字段 都不会被阻塞。只是收集统计信息的时候比较占IO,所以一般都是配置数据库闲时跑维护任务。 2、该数据统计信息任务关闭的话,对业务系统的性能有何影响? oracle 现在是CBO 优化器对sql进行优化,依靠收集的统计信息分析得出最优的执行计划。如果你把统计信息的维护任务关闭了,业务表的统计信息都是过时的不准确的,cbo得出的执行计划就不会是最优的。比如该走索引的,执行计划走成全表了,sql性能自然会受影响。 3、如果不关闭数据统计信息任务,如何减少其对业务系统的影响? 统计信息任务还是有必要打开的。调到业务闲事执行就好了。
实际情况是,维修窗口期间,会出现查询卡住的情况;等维修窗口时间一过,又自动恢复了。 可能什么会引起卡住。 该查询语句的执行效率实际只有1ms,耗费也只有1,磁盘也只有几个字节。如何解释?
minsic78 2018-02-06
  • 打赏
  • 举报
回复
如果应用系统没有统计信息的支持也跑的挺欢的,那么不收集统计信息也没什么,但,如果你之前一直开着收集统计信息的job,最好不要停了,因为随着数据的增长,原有的统计信息会越来越不符合实际情况,CBO生成高效执行计划的几率会变得越来越低,终有一天,你可能要遭遇由此带来的SQL性能突变,严重时可能会有整库性能问题,甚至宕机…… 这关不关会带来什么样的后果,其实是个概率问题,没有说开着一定好,或者说关了就一定不好的说法,有最新最详实的统计信息,CBO就更趋向生成高效的执行计划,但不代表它能让所有SQL的执行计划都变得更好(更差也有可能),至少没把握控制好执行频率很高的应用SQL的执行计划前,建议打开这个自动收集统计信息的job,有遇到即使使用系统自带job收集统计信息也无法得到合适执行计划的SQL,再做特殊处理——比如收集更加详细或者精确的统计信息,使用profile等手段固定执行计划等等。
卖水果的net 2018-02-05
  • 打赏
  • 举报
回复
楼主细说下,你们是怎么收集的,比如收集的比例是多少; 两个建议: 1、如果比例设置的过高,可以适当的下调一下。10% -20% 就可以。 2、不同的业务模块分别收集,周一收集财务的、周二收集大供应链的、周三收集其他模块的。
liu志坚 2018-02-05
  • 打赏
  • 举报
回复
1、为什么会阻塞,维修窗口干的上面事情会造成相关操作阻塞? 不会阻塞。表收集统计信息的时候 增删改查甚至加字段,删字段 都不会被阻塞。只是收集统计信息的时候比较占IO,所以一般都是配置数据库闲时跑维护任务。 2、该数据统计信息任务关闭的话,对业务系统的性能有何影响? oracle 现在是CBO 优化器对sql进行优化,依靠收集的统计信息分析得出最优的执行计划。如果你把统计信息的维护任务关闭了,业务表的统计信息都是过时的不准确的,cbo得出的执行计划就不会是最优的。比如该走索引的,执行计划走成全表了,sql性能自然会受影响。 3、如果不关闭数据统计信息任务,如何减少其对业务系统的影响? 统计信息任务还是有必要打开的。调到业务闲事执行就好了。

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧