Oracle-数据库迁移之后性能变慢问题分析

问题背景:

        ​一套Oracle11.2.0.4的RAC集群,通过Dataguard switchover方式迁移到新机器之后,运行第一天应用报障说应用性能慢,需要进行性能问题排查

 

问题分析:

        首先,登陆到服务器,用TOP看一眼两个节点数据库的服务器整体负载情况,节点二的负载别节点一高,但整体cpu,io等待负载还是在正常的范围内,查看数据库的等待事件,也没有大量IO,锁争用的等待事件,初步判断数据库的整体负载正常,可能是某些模块语句有问题,再次跟应用确认应用是全部慢,还是某个功能、语句慢,得到应用回复说是部分涉及与其他系统交互的存储过程执行起来慢,这与我们之前的初步判断基本一致,那接下来我们的分析方向就锁定为这一类涉及与其他系统交互的存储过程

 

356a712619e99c6ded05007a13edcd1d.png

 

b1ac3ae620d1891f0cd941a3d9dd3735.png

        让应用提供了其中一个正在执行的存储过程XXX_APP_INTERFACE_PKG.GET_PRE_XXX_RESULT,sql_id:6321wf6xz0at4,应用描述这个存储过程迁移之前的执行时间是在5分钟之内可以执行完,现在的执行时间要超过10分钟以上,最近一次30分钟还没执行完,查看当前执行存储过程的会话,等待事件为TCP Socket (KGAS)

注:KGAS是数据库服务层中处理TCP/IP套接字的组件,KGAS接口不参与客户端/服务器通信,而是当数据库服务上的会话使用PLSQL包如UTL_HTTP,UTL_TCP进行TCP/IP调用时使用到,在调用过程出现的等待为TCP Socket (KGAS)

c4cdec46adc5858a0191c1d4fe8964ad.png

        用10046跟踪了该会话执行的sql情况,并用tkprof格式化跟踪产生的trc文件

--跟踪会话
oradebug setmypid
oradebug unlimit 106903
oradebug event 10046 trace name context forever,level 12 
oradebug tracefile_name
--关闭跟踪会话
oradebug event 10046 trace name context off
--格式化trc文件
tkprof trc文件 生成文件

        从trc文件看,执行的存储过程语句主要的等待为SQL*Net message from dblink等待从dblink的目标端返回数据,没有发现涉及调用UTL_HTTP,UTL_TCP的语句

 

63fd32fe3416b908cdcbc20b5077feb2.png

        先查看了调用的dblink语句,语句只调用了dblink目标端的表,没有与源端的表进行关联,去掉dblink直接在目标端跑了一下,发现语句的执行效率的确一般,执行时间需要6-7秒,主要消耗在于语句里面一张超过1G大小的表XXX_PARAM_LIST的全表扫描

 

cac6b7f164380f090d969a34222e48a9.png

fc9a2dfc0dbdfd9582cea0ae5263526f.png

        查询语句结构不复杂,where条件列组合的唯一值也较多过滤行不错,可以直接通过创建一个组合索引快速优化这个语句,创建索引优化了语句,执行时间降为1秒以内

9062d8373b9f094b3f8337e3cb832717.png

        优化了高消耗的语句之后,存储过程的执行速度还是没有任何改善,还是要找到真正引发TCP Socket (KGAS)等待的代码,直接去分析10046生成的trc文件,之前是检查生成的tkprof文件,格式完之后的文件可能会遗漏了一些存储过程执行的信息,直接是trc里面搜等待事件TCP Socket (KGAS)的关键字,发现了一些引发等待事件TCP Socket (KGAS)的输入值,里面有个http开头的url地址

 

a10b34112e470178ae12597996674183.png

        进一步查看了存储过程里面的代码,发现里面调用了一个消息推送的存储过程,该存储过程使用了UTL_HTTP包进行了外部url的请求

 

649f870137c52a1d61db01e886a8dced.png

a9969385b35c4f84986f108d556e3ea8.png

        尝试使用curl工具从数据库的服务器去测试之前发现的url能否访问成功,出现访问超时的报错Failed connect to  xxxxx;connection timed out,到这里终于抓到了问题的真凶,存储过程里面通过UTL_HTTP包进行了外部url的消息推送,而数据库服务器与请求的url存在网络通信不通问题,导致存储过程一直出现TCP Socket (KGAS)的等待,存储过程执行缓慢

 

9a6e184d2bc9e933d0e8a65e4bbd887e.png

        进一步跟网络管理员确认,迁移之后并没有完全开通新服务器到应用系统的网络策略,而数据库迁移只是替换了scan ip,主机的IP是发生了变化的,所以数据库服务器跟一些外部的应用系统存在网络不通的问题,最终导致数据库迁移到新环境之后,那些存在系统交互的存储过程执行起来变慢

 

问题解决:

        网络重新开通了网络策略,将新数据库服务器的主机IP加入到了旧的数据库组里面,确保新数据库服务器与应用系统的网络相通,存储过程的执行效率也恢复了正常,平均执行时间从原来的2417秒降到了2.85秒

acffaeb45df01d694370b4c37dc9892e.png

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MCMC:Metropolis-Hastings抽样

马尔可夫链有两个要素: 一步转移概率矩阵:初始分布: 如果这两个要素都确定了,这个链的转移行为就被完全确定下来了。我们就可以求得极限分布 ,只需解下面这个方程即可。 但是MCMC试图解决的问题刚好是反过来。即已知…

微同城生活源码系统:专业搭建本地生活服务平台 附带完整的安装部署教程

随着移动互联网的普及,人们越来越依赖手机进行日常生活中的各种活动,包括购物、餐饮、娱乐等。而传统的本地生活服务平台往往存在着功能单一、用户体验差等问题,无法满足用户日益增长的需求。因此,开发一款功能强大、易用性强的本…

HubSpot电子邮件自动化的关键功能和流程!

HubSpot提供了强大的电子邮件自动化工具,使用户能够创建、执行和跟踪复杂的电子邮件市场营销活动。以下是HubSpot电子邮件自动化的一些关键功能和流程: 1.电子邮件工作流程(Email Workflows): 用户可以使用HubSpot的工…

达梦数据库报错 执行失败(语句1) -2111: 第1 行附近出现错误: 无效的列名[system]

[TOC](达梦数据库报错 执行失败(语句1) -2111: 第1 行附近出现错误: 无效的列名[system]) 1、报错现象 执行下列sql语句 UPDATE "TEST"."TEST_1" SET "TEST_1"."SALT"123456 where "TEST_1"."ID""system&…

境内深度合成服务算法备案清单(2023年12月)

截止2024年1月3日,第三批深度合成服务算法备案信息的公告尚未发布,预计将会在2024-1-10左右发布,我公司已知晓部分公示名单,如中国电信数字人生成算法,详情联系WX号:SuanfabeiandayuAI生成合成类算法应办理…

「Qt Widget中文示例指南」如何实现一个日历?(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文中的CalendarWi…

(2023|AABI,多模态信息瓶颈,变分近似,视觉语言模型可解释性)通过多模态信息瓶颈归因对图像文本表示的视觉解释

Visual Explanations of Image-Text Representations via Multi-Modal Information Bottleneck Attribution 公和众和号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 3. 通过多模态…

【力扣题解】P236-二叉树的最近公共祖先-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P236-二叉树的最近公共祖先-Java题解🌏题目描述💡题解&#x…

数据结构【图篇】

数据结构【图篇】 文章目录 数据结构【图篇】前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件? 目录一、图(一)、图的存储(二)、图的基本操作(三)、最短路径问题 二、拓扑排序三、结语 前言 为什么突然想学算法了? > 用较为“官方…

达梦数据库查询各表数据量/以及达梦更新统计信息

1、达梦数据库查询各表数据量 达梦数据库与开源的MySQL不一样,MySQL查询各表数据量非常简单 而达梦数据库就有一些地方要注意,先用这句去查↓ SELECT table_name, num_rows FROM all_tables WHERE tablespace_name 表空间名; 如果结果如下图一样&…

java代码中使用Groovy的三种方式详解

java代码中使用Groovy ​ Groovy语言是一种运行在java虚拟机上的一种动态语言,它可以单独使用,也可以配合java语言一起使用,下面的部分,我们将用java项目结合Groovy做一些学习和使用。 ​ 先建一个springboot项目,在…

深度学习|5.2 偏差和方差

偏差和方差 Bias(偏差):偏差是指对样本点的估计值和实际值的偏离程度。偏差越大,样本点越不符合实际值。偏差衡量单个数据点的偏离程度,如下图的第二行。 Variance(方差):方差能代表…

resetlogs失败故障恢复-ORA-01555---惜分飞

客户数据库resetlogs报错 Tue Dec 19 15:21:23 2023 ALTER DATABASE MOUNT Successful mount of redo thread 1, with mount id 1683789043 Database mounted in Exclusive Mode Lost write protection disabled Completed: ALTER DATABASE MOUNT Tue Dec 19 15:22:01 2023…

pytorch04:网络模型创建

目录 一、模型创建过程1.1 以LeNet网络为例1.2 LeNet结构1.3 nn.Module 二、网络层容器(Containers)2.1 nn.Sequential2.1.1 常规方法实现2.1.2 OrderedDict方法实现 2.2 nn.ModuleList2.3 nn.ModuleDict2.4 三种容器构建总结 三、AlexNet网络构建 一、模型创建过程 1.1 以LeNe…

短剧分销系统搭建,打造新的蓝海项目

近一年来,短剧占据了当下大众的碎片化时间,各大影视公司也纷纷加入到了短剧行业中。2023年一整年短剧的规模已经达到了三百多亿元,发展非常快。目前,短剧作为一种新的商业模式,已经受到了广泛认可,也为创业…

Python在金融大数据分析中的AI应用实战

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 随着人工智能时代的到来,Python作为…

app store里面的构建版本在线上传

开发苹果ios应用,无论是用原生开发、用hbuilderx开发还是用其他h5框架开发的app,都需要将打包好的ipa文件上传到app store。 在上架app store的过程中,我们会遇到下图的这样一个问题: 就是它要求我们上传一个构建版本&#xff0c…

基于SSM(非maven)的教室预约管理系统——有报告(Javaweb)

项目简介 本项目为基于SSM(非maven)的教室预约管理系统,本项目主要分为二种角色:用户,管理员 管理员拥有功能:教室信息管理、预约审核管理、预约记录查询、用户注册管理、修改个人信息、退出登录等 用户…

为团队进行文档赋能

大家好,才是真的好。 说来也巧,最近看一个论坛,有人问他们在公司内网管理接收到的外部发文,请问有什么办法工具能够快速的进行管理,在需要的时候供给大家搜索和查看。很多人提了不同的办法,比如说用文件共…

JavaBean

学习目的与要求 熟练掌握<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>等JSP的操作指令。 本章主要内容 编写JavaBean在JSP中使用JavaBean 一个JSP页面通过使用HTML标记为用户显示数据&#xff08;静态部分&#xff09;&#xff0c;页面中变量的…