跑批SQL性能异常分析

news2024/10/7 16:21:21


跑批是串行进行的,同时伴随着在线业务,整个跑批过程中只卡在SQL(6hqva0h4awrxh)执行环节上,相关等待事件为gc current grant 2-way,其他环节及在线业务都不受影响,主机整体资源较为空闲。最后通过重建问题SQL涉及对象的索引解决。
故障时间段的awr、ash性能报告和数据库hanganalyze全局dump信息:

如截图所示并没有出现异常指标及全局的性能问题,种种迹象表明数据库整体负载较为正常。问题只出现在单个SQL的执行上。
等待事件


从systemdump 该会话的信息可以看出并没有任何会话堵塞,历史的等待一直为gc current grant 2-way。读取的对象是4号数据文件919380块,其中4号数据文件正是undotbs,说明会话进程读取数据块前镜像,大量DML操作在同一个对象上发生。

说明
gc current grant 2-way:这个等待事件说明当前实例向主节点申请了一个current块,而且这个申请已经被主节点响应,其中并没有出现超时。但是,这个被申请的数据块不包含在任何实例的数据库缓冲区中,它是需要申请实例从数据文件读取出来的,当current grant 2-way的等待事件很多,并且消耗了很多等待时间的话,可能的原因如下:
原因1:网络带宽
原因2:应用程序的角度来讲,导致大量current/cr grant 2-way等待事件的原因如下:
2.1:某些SQL语句的执行计划出现了问题
2.2:数据库缓冲区被设置过小,这导致很多数据被频繁地写入数据文件
2.3:检查点过于频繁。例如:fast_start_mttr_target设置的过短
其中原因1通过osw系统监控被排除,2.2和2.3可能性也不大。剩下2.1,我们看一下问题SQL语句:

update bs_account_jnls_tax
   set status = '04'
 where status = '00'
   and acc_date = to_date('2024-02-10', 'yyyy-mm-dd')
   and trans_jnls_no in
       (select distinct trans_jnls_no
          from jn_batch_result
         where batch_no in ('75110058', '75110068')
           and acc_date = to_date('2024-02-10', 'yyyy-mm-dd'))

一条简单的update语句使用非绑定变量,以下为内存中的执行计划:

由于使用非绑定变量,CBO计算存在误差,实际和看到的执行计划存在不一致的现象。(实际的执行计划需要通过10053单独跟踪验证),这也验证了为什么通过重建索引改变执行计划来解决问题。

总结

通过上述分析判断,最主要的问题还是SQL语句本身未使用绑定变量导致执行计划不稳定,执行效率低所导致。
解决方法:
1. 规范开发SQL语句编写统一使用绑定变量
2. 评估bs_account_jnls_tax表大小,keep到buffer cache内存中,或问题SQL前先执行select count(*) from trans_jnls_no/ bs_account_jnls_tax
3. 如果建议1应用短时间内无法变更,再次出现故障时可以尝试从shared pool中手动刷出去执行计划重新生成新的,方法如下:
查询对应sql的address和hash value
select s.SQL_TEXT, s.ADDRESS || ‘,’ || s.HASH_VALUE from v$sqlarea s where sql_id = ‘10kq6nc2rfrf0’;
exec sys.dbms_shared_pool.purge(‘0000000141AE1310,91708864’,‘c’);
注:0000000141AE1310,91708864为s.ADDRESS || ‘,’ || s.HASH_VALUE的值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dockerfile文件书写

1.dockerfile构建nginx镜像 1.1书写dockerfile文件 mkdir nginx #创建nginx目录 cd nginx vim dockerfile # 修改文件FROM centos # 基础镜像,默认最新的centos8操作系统 MAINTAINER xianchao # 指定镜像的作者信息 RUN rm -rf /etc/yum.repos.d/* # centos8默认…

HTTP的详细介绍

目录 一、HTTP 相关概念 二、HTTP请求访问的完整过程 1、 建立连接 2、 接收请求 3、 处理请求 3.1 常见的HTTP方法 3.2 GET和POST比较 4、访问资源 5、构建响应报文 6、发送响应报文 7、记录日志 三、HTTP安装组成 1、常见http 服务器程序 2、apache介绍和特点 …

基于机器学习的青藏高原高寒沼泽湿地蒸散发插补研究_王秀英_2022

基于机器学习的青藏高原高寒沼泽湿地蒸散发插补研究_王秀英_2022 摘要关键词 1 材料和方法1.1 研究区概况与数据来源1.2 研究方法 2 结果和分析2.1 蒸散发通量观测数据缺省状况2.2 蒸散发与气象因子的相关性分析2.3 不同气象因子输入组合下各模型算法精度对比2.4 随机森林回归模…

对象的接口

“类”,那个类具有自己的通用特征与行为。 因此,在面向对象的程序设计中,尽管我们真正要做的是新建各种各样的数据“类型”(Type),但几乎所有面向对象的程序设计语言都采用了“class”关键字。当您看到“ty…

多线程相关(1)

线程调度 线程状态:状态切换阻塞与唤醒阻塞唤醒 wait 与 sleep创建线程方式 线程是cpu任务调度的最小执行单位,每个线程拥有自己独立的程序计数器、虚拟机栈、本地方法栈。 线程状态: 线程状态包括:创建、就绪、运行、阻塞、死亡…

第六十四天 服务攻防-框架安全CVE复现Apache shiroApache Solr

第六十四天 服务攻防-框架安全&CVE复现Apache shiro&Apache Solr 知识点: 中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere, Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring, Flask,jQuery等 1、开发框…

【rust】7、命令行程序实战:std::env、clap 库命令行解析、anyhow 错误库、indicatif 进度条库

文章目录 一、解析命令行参数1.1 简单参数1.2 数据类型解析-手动解析1.3 用 clap 库解析1.4 收尾 二、实现 grep 命令行2.1 读取文件,过滤关键字2.2 错误处理2.2.1 Result 类型2.2.2 UNwraping2.2.3 不需要 panic2.2.4 ? 问号符号2.2.5 提供错误上下文-自定义 Cust…

Vue 使用 v-bind 动态绑定 CSS 样式

在 Vue3 中&#xff0c;可以通过 v-bind 动态绑定 CSS 样式。 语法格式&#xff1a; color: v-bind(数据); 基础使用&#xff1a; <template><h3 class"title">我是父组件</h3><button click"state !state">按钮</button&…

相机图像质量研究(38)常见问题总结:编解码对成像的影响--呼吸效应

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

如何在同一个module里面集成多个数据库的多张表数据

确保本公司数据安全&#xff0c;通常对数据的管理采取很多措施进行隔离访问。 但是&#xff0c;Mendix应怎样访问散布于异地的多个数据库呢&#xff1f; 前几期我们介绍过出海跨境的大企业对于Mendix的技术、人才的诉求后&#xff0c;陆陆续续有其他客户希望更聚焦具体的实际场…

雷池社区版WAF:开源护网,共筑网络安全长城

雷池社区版WAF&#xff08;Web Application Firewall&#xff09;是一款开源的网络应用防火墙&#xff0c;旨在为网站和网络应用提供安全防护&#xff0c;以抵御各种网络攻击&#xff0c;如SQL注入、跨站脚本攻击&#xff08;XSS&#xff09;、文件包含、以及其他常见的安全威胁…

java日志框架总结(六、logback日志框架 扩展)

springboot推荐使用logback-spring.xml而不是logback.xml而logback-spring.xml文件与logback.xml文件还是有一定的区别&#xff0c;所以简单讲解一下。 一、logback-spring.xml 配置文件实例&#xff1a; <?xml version"1.0" encoding"UTF-8"?> …

刷LeetCode541引起的java数组和字符串的转换问题

起因是今天在刷下面这个力扣题时的一个报错 541. 反转字符串 II - 力扣&#xff08;LeetCode&#xff09; 这个题目本身是比较简单的&#xff0c;所以就不讲具体思路了。问题出在最后方法的返回值处&#xff0c;要将字符数组转化为字符串&#xff0c;第一次写的时候也没思考直…

美团外卖商超商品月销量数据

字段内容&#xff1a; shop_id varchar(50) NOT NULL, shop_id_str varchar(50) NOT NULL, shop_name varchar(400) DEFAULT NULL, shop_min_price varchar(10) DEFAULT NULL, shop_score varchar(10) DEFAULT NULL, shop_wm_score varchar(10) DEFAULT NU…

「WinCC报警系统专题」简述“消息系统”

WinCC通过报警给操作员提供了有关过程故障和错误的信息。它们有助于尽早检测重要情况和避免停机时间。 一、消息系统 消息&#xff08;报警&#xff09;系统由组态和运行系统组件组成。 1、组态系统 报警记录编辑器&#xff08;如图1所示&#xff09;是报警系统的组态组件。报…

2024年了,如何从 0 搭建一个 Electron 应用

简介 Electron 是一个开源的跨平台桌面应用程序开发框架&#xff0c;它允许开发者使用 Web 技术&#xff08;如 JavaScript、HTML 和 CSS&#xff09;来构建桌面应用程序。Electron 嵌入了 Chromium&#xff08;一个开源的 Web 浏览器引擎&#xff09;和 Node.js&#xff08;一…

【riscv】使用qemu运行riscv裸机freestanding程序

文章目录 1. 运行显示2. 工具准备3. 裸机代码和编译3.1 源码3.2 编译 4. 使用qemu仿真运行riscv裸机程序 1. 运行显示 详见左下角&#xff0c; 运行时串口输出的字符 A ; 2. 工具准备 # for riscv64-linux-gnu-gcc sudo apt-get install gcc-riscv64-linux-gnu# for qemu-s…

PROBIS铂思金融破产后续:ASIC牌照已注销

2024年1月31日&#xff0c;PROBIS铂思金融的澳大利亚ASIC牌照 (AFSL 338241) 被注销《差价合约经纪商PROBIS宣布破产&#xff0c;澳大利亚金融服务牌照遭暂停》&#xff0c;这也就意味着&#xff0c;PROBIS铂思金融目前已经没有任何金融牌照。 值得注意的是&#xff0c;时至今日…

摄像设备+nginx+rtmp服务器

前言 由于html中的video现在不支持rtmp协议(需要重写播放器框架&#xff0c;flash被一刀切&#xff0c;360浏览器还在支持flash),遂用rtmp作为桥梁,实际是hls协议在html中起作用. 在此推荐一款前端播放器,.ckplayer 简直了,写点页面,一直循环&#xff0c;洗脑神曲 dream it po…

Springboot 中使用 Redisson+AOP+自定义注解 实现访问限流与黑名单拦截

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…