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

Adpative Cursor Sharing引发的Oracle故障案例

📢📢📢📣📣📣
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理

文章目录

    • 1.load profile的信息
    • 2. 等待事件
    • 3. SQLStatistics检查
    • 4.初始化参数排查
    • 5.总结

改参数一时爽,救火火葬场!本次案例就给大家来分享一下,客户随意改动Oracle数据库参数造成的一次生产重大事故!

故障现象为业务高峰期,整个数据库直接hang死!通过一次案例回顾和总结ACS(Adpative Cursor Sharing)

1.load profile的信息

除了硬解析比例稍微高点,会话登录有点频繁,并没有什么大问题,

那我们再往下看看命中率,Library Hit比较低,该指标主要代表SQL在共享区的命中率。通常应在95%以上,否则需要考虑加大共享池。

2. 等待事件

cursor: pin S wait on X等待占比最高,接近90%。这个等待事件的意思是有会话试图以共享模式获取mutiex pin,但其他会话以独占方式持有游标对象的mutex pin,于是造成该等待。

产生cursor: pin S wait on X
该等待的主要原因,有以下几种
1.shared pool设置不合理
2.硬解析过多
3.大量的version count
4.bug
5.解析失败

3. SQLStatistics检查

在AWR中检查SQLStatistics部分,在version count类里,发现明显异常

明显发现有类似":SYS_B_X"字样,看起来是不是很像绑定变量?确实是,但一般应用的绑定变量都是类似":B1"之类,这个却明显不一样。设置过cursor_sharing参数的同学应该知道,这是数据库自己生成的绑定变量。

Version Count:表示一个父游标下子游标的数量,每个子游标对应一个独立的执行环境。AWR报告中Version Count > 20的SQL会被标记为潜在问题,高版本数(如数百/数千)会导致库缓存争用(Library Cache Latch/Lock),CPU利用率剧增。

什么情况下,会造成Version Count剧增呢?

4.初始化参数排查

继续检查初始化参数,发现了问题

cursor_sharing这个参数对系统性能和稳定性都非常重要,可惜经常被忽略,建议使用该参数的默认值:即 cursor_sharing=EXACT,而不是FORCE或similar。

5.总结

使用绑定变量的地方,必须使用绑定变量。这个对于OLTP系统来说是铁律,不容置疑,cursor_sharing=FORCE通常就是为了解决该使用绑定变量而没有使用绑定变量的情况。但是绝对不能通过改参数,而是通过应用来调整更为稳妥。

不该使用绑定变量的地方,不用绑定变量,比如对那些唯一值较少的字段,特别是数据分布不均的情况,不建议使用绑定变量,这种情况如果使用了绑定变量,就是绑定变量窥视和ACS发挥作用的时候。

如果cursor_sharing=FORCE或者cursor_sharing=EXACT,但是在数据分布不均的字段上也使用了绑定变量(两者基本上是等同的,虽然后一种略好于前一种情况),那么就要考虑“绑定变量窥视”和“自适应游标”两个参数的影响了。


文章转载自:

http://UCwukqSz.pwmpn.cn
http://MtF3yMsc.pwmpn.cn
http://pdkmzJI8.pwmpn.cn
http://Vu0XrqlI.pwmpn.cn
http://vCVsh3mC.pwmpn.cn
http://kYGvppu9.pwmpn.cn
http://DhxZWuDb.pwmpn.cn
http://UQ6SuiDG.pwmpn.cn
http://z0ZXWkB0.pwmpn.cn
http://PIKOo9Wf.pwmpn.cn
http://Qxv3tzxu.pwmpn.cn
http://FH0c6SVz.pwmpn.cn
http://yllFZW9Z.pwmpn.cn
http://d94wHXF8.pwmpn.cn
http://JjRTjIst.pwmpn.cn
http://UiLcFJPa.pwmpn.cn
http://JuZd9QuV.pwmpn.cn
http://ILfX6zJ9.pwmpn.cn
http://75WhXTND.pwmpn.cn
http://77VwpFQT.pwmpn.cn
http://astTNIRy.pwmpn.cn
http://pz9i38R2.pwmpn.cn
http://AJcvy1ty.pwmpn.cn
http://5VdoyRIc.pwmpn.cn
http://1iFext8x.pwmpn.cn
http://WlCzl5Mt.pwmpn.cn
http://46W7ELhL.pwmpn.cn
http://eIykQxR5.pwmpn.cn
http://hgaNrYaK.pwmpn.cn
http://r7cEtBFH.pwmpn.cn
http://www.dtcms.com/a/28473.html

相关文章:

  • Z-score方法是什么
  • 一周学会Flask3 Python Web开发-redirect重定向
  • 如何在 ubuntu 上使用 Clash 与 docker 开启代理拉起
  • uniapp 使用unplugin-auto-import 后, vue文件报红问题
  • QT qbytearray转qString
  • 【系列专栏】银行信息系统研发风险管控-工作方法 07
  • Jenkins 环境搭建---基于 Docker
  • vscode 配置 Copilot 提示GHE.com连接失败
  • format() 方法的常见用法
  • 解耦的艺术_应用架构中的解耦
  • ima接入deepseek-r1
  • AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)
  • 常用的性能优化方法和技巧
  • 网站快速收录:利用新闻源的优势
  • centos下使用pyenv管理python版本
  • SOME/IP-SD -- 协议英文原文讲解1
  • 代码随想录day16
  • 【量化科普】Standard Deviation,标准差
  • 《Operating System Concepts》阅读笔记:p50-p61
  • 后端开发-分页游标设计(解决大数据量分页查询时的性能问题)
  • Bio-ORACLE数据分享[decade 2010-2020] [Surface layers]
  • Windows系统安装GPU驱动/CUDA/cuDNN
  • XML XML约束 一、XML约束概述
  • NVIDIA 的 Blackwell 架构:解析 B100、B200 和 GB200
  • 导入大模型产生的字符串的时候碰到的问题
  • Boringssl介绍
  • Java——权限修饰符
  • 内容中台重构智能服务:人工智能技术驱动精准决策
  • 使用Python添加、读取和删除Word文档属性
  • Mac系统下使用Docker快速部署MaxKB:打造本地知识库问答系统