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

news2024/11/15 10:12:39

问题背景:

        ​一套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

 

 

 

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

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

相关文章

CMake入门教程【基础篇】CMake+Linux gcc构建C++项目

文章目录 1.概述2.GCC与CMake介绍3.安装CMake和GCC4.代码示例 1.概述 在Linux环境下,使用CMake结合GCC(GNU Compiler Collection)进行项目构建是一种常见且高效的方法。CMake作为一个跨平台的构建系统,可以生成适用于不同编译器的…

CentOS 7 实战指南:文件操作命令详解

写在前面 想要快速掌握 CentOS 7 系统下的文件操作技巧吗?不用担心!我为你准备了一篇详细的技术文章,涵盖了各种常用的文件操作命令。无论您是初学者还是有一定经验的用户,这篇文章都能帮助您加深对 CentOS 7 文件操作的理解&…

海外住宅IP代理的工作原理和应用场景分析,新手必看

海外住宅IP代理作为一种技术解决方案,为用户提供了访问全球网络资源和维护隐私安全的方法。本文将介绍海外住宅IP代理的工作原理和应用场景,帮助读者更好地理解和利用这一技术。 一、工作原理 海外住宅IP代理的工作原理基于代理服务器和IP地址的转发。它…

阿里云系统盘测评ESSD、SSD和高效云盘IOPS、吞吐量性能参数表

阿里云服务器系统盘或数据盘支持多种云盘类型,如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等,阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

HackTheBox - Medium - Linux - BroScience

BroScience BroScience 是一款中等难度的 Linux 机器,其特点是 Web 应用程序容易受到“LFI”的攻击。通过读取目标上的任意文件的能力,攻击者可以深入了解帐户激活码的生成方式,从而能够创建一组可能有效的令牌来激活新创建的帐户。登录后&a…

李沐机器学习系列1--- 线性规划

1 Introduction 1.1 线性回归函数 典型的线性回归函数 f ( x ) w ⃗ ⋅ x ⃗ f(x)\vec{w} \cdot \vec{x} f(x)w ⋅x 现实生活中,简单的线性回归问题很少,这里有一个简单的线性回归问题。房子的价格和房子的面积以及房子的年龄假设成线性关系。 p r …

如何做好设备维护管理?这款设备管理系统值得推荐

在现代化的工业生产中,设备的高效运行是保障生产安全和效率的关键因素。然而,在企业实际的设备维护管理业务中,仍面临着许多难题与痛点: 设备档案管理乱:传统管理方式下,如果想查询设备的历史巡检、维修、…

[雷池WAF]长亭雷池WAF配置基于健康监测的负载均衡,实现故障自动切换上游服务器

为了进一步加强内网安全,在原有硬WAF的基础上,又在内网使用的社区版的雷池WAF,作为应用上层的软WAF。从而实现多WAF防护的架构。 经过进一步了解,发现雷池WAF的上游转发代理是基于Tengine的,所以萌生出了一个想法&…

用通俗易懂的方式讲解大模型:在 CPU 服务器上部署 ChatGLM3-6B 模型

大语言模型(LLM)的量化技术可以大大降低 LLM 部署所需的计算资源,模型量化后可以将 LLM 的显存使用量降低数倍,甚至可以将 LLM 转换为完全无需显存的模型,这对于 LLM 的推广使用来说是非常有吸引力的。 本文将介绍如何…

双侧电源系统距离保护MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 系统原始数据 双侧电源系统模型如图所示: 仿真模型搭建 将线路AB分成Line1和Line2,将线路BC分成Line3和Line4,用三相电压电流测量模块作为系统母线,根据系统已…

在Cadence中单独添加或删除器件与修改网络的方法

首先需要在设置中使能 ,添加或修改逻辑选项。 添加或删除器件,点击logic-part,选择需要添加或删除的器件,这里的器件必须是PCB中已经有的器件,Refdes中输入添加或删除的器件标号,点击Add添加。 添加完成后就会显示在R1…

Linux学习记录——삼십삼 http协议

文章目录 1、URL2、http协议的宏观构成3、详细理解http协议1、http请求2、http响应1、有效载荷格式2、有效载荷长度3、客户端要访问的资源类型4、修改响应写法5、处理不同的请求6、跳转 3、请求方法(GET/POST)4、HTTP状态码(实现3和4开头的&a…

基于深度学习的交通标志图像分类识别系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本文详细探讨了一基于深度学习的交通标志图像识别系统。采用TensorFlow和Keras框架,利用卷积神经网络(CNN)进行模型训练和预测,并引入VGG16迁移学习…

x-cmd pkg | trafilatura - 网络爬虫和搜索引擎优化工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trafilatura 是一个用于从网页上提取文本的命令行工具和 python 包: 提供网络爬虫、下载、抓取以及提取主要文本、元数据和评论等功能可帮助网站导航和从站点地图和提要中提取链接无需数据库,输出即可转换…

深入了解Apache 日志,Apache 日志分析工具

Apache Web 服务器在企业中广泛用于托管其网站和 Web 应用程序,Apache 服务器生成的原始日志提供有关 Apache 服务器托管的网站如何处理用户请求以及访问您的网站时经常遇到的错误的重要信息。 什么是 Apache 日志 Apache 日志包含 Apache Web 服务器处理的所有事…

相关性与P值

相关性与P值 0 FQA:1 相关性与显著性的关系2 相关性分析3 使用medcalc进行相关性分析:参考文章: 0 FQA: 主要描述相关性和p值分别代表什么意义? 以及如何使用medcalc计算相关性和p值。 Q1:p值代表什么意义…

离线部署的MinIO

网络有不同的部分,例如 DMZ、公共、私有、堡垒等。这实际上取决于您的组织和网络要求。在部署应用程序时,任何应用程序,我们都需要考虑类型以及它是否需要位于网络的特定部分。 例如,如果要部署数据库,则不希望它位于…

Power Apps 学习笔记 - IOrganizationService Interface

文章目录 1. IOrganization Interface1.1 基本介绍1.2 方法分析 2. Entity对象2.1 Constructor2.2 Properties2.3 Methods 3. 相关方法3.1 单行查询 Retrive3.2 多行查询 RetriveMultiple3.3 增加 Create3.4 删除 Delete3.5 修改 Update 4. 数据查询的不同实现方式4.1 QueryExp…

CloudManager大数据本地环境标准部署文档

一、基本信息 文档目的:标准化、规范化Hadoop在本地化环境中部署所涉及的操作和流程,以便高效、高质地落地本地化环境部署的工作。 二、安装介质 FTP服务器: http://172.16.246.252:81/hadoopteam/cloudmanager/CDH-5.8.2-1.cdh5.8.2.p0.3…

Document对象详解

前言 在前端开发中,DOM(文档对象模型)扮演着重要的角色。它允许我们使用JavaScript来与网页文档进行交互,实现动态的网页效果。DOM的核心部分之一就是Document对象,它代表了整个HTML文档。在本篇博客中,我们…