一 问题描述

有次生产环境cpu使用率增高,ADDM报告提示某条sql比较耗费cpu:

提示:

在分析期间, 此 SQL 语句至少利用了 6 个不同的执行计划

#查看该sql都有哪些执行计划

SELECT * 

FROM table(DBMS_XPLAN.DISPLAY_AWR('sqlid值'));

我手动执行这个sql需要5秒。但是我用sql monitor查看发现它执行得超慢,5个多小时了,还没执行完:

发现99%慢在一个表的全表扫描上,但是这个条件字段上是有索引的,它没走索引,走的全表扫描:

我手动执行这个sql(5秒),看它的执行计划这个表是走了索引的。

说明数据库有时选择了错误的执行计划。

二 解决办法

2.1 收集下这个表的统计信息

BEGINDBMS_STATS.GATHER_TABLE_STATS(ownname     => 'schema名称',     -- 表所属的用户(如 HR)tabname     => '表名',      -- 表名(如 EMPLOYEES)estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, -- 自动估算采样比例method_opt  => 'FOR ALL COLUMNS SIZE AUTO',      -- 自动选择直方图列cascade     => TRUE,             -- 同时收集索引的统计信息(默认为 FALSE)degree      => 8,no_invalidate => FALSE           -- 立即使依赖的游标失效(可选));END;/

#查看统计信息

select table_name,num_rows,blocks,last_analyzed from dba_tables where table_name in ('表名') and owner='schema名称';

2.2 固化执行计划

如果收集完表的统计信息,sql还是慢,则固化下执行计划

2.2.1 上传文件coe_xfr_sql_profile.sql

点击这里下载该文件,然后用oracle用户将其上传至/home/oracle目录下

2.2.2 执行coe_xfr_sql_profile.sql,并手动执行其生成的固化sql

# su - oracle

$ sqlplus / as sysdba @/home/oracle/coe_xfr_sql_profile.sql

Parameter 1:
SQL_ID (required)

Enter value for 1: 7arsymf6aatr3      >>>入参1:此处输入需要固化的SQL_ID


PLAN_HASH_VALUE AVG_ET_SECS
--------------- -----------
     2931187647        .036      >>> 一般选择AVG_ET_SECS最小版本,并记住PLAN_HASH_VALUE值:2931187647
     3394618928      42.585
      894327090     164.624

Parameter 2:
PLAN_HASH_VALUE (required)

Enter value for 2: 2931187647    >>>入参2:此处输入上面AVG_ET_SECS最小耗费资源的PLAN_HASH_VALUE

Values passed:
~~~~~~~~~~~~~
SQL_ID         : "7arsymf6aatr3"
PLAN_HASH_VALUE: "2931187647"


Execute coe_xfr_sql_profile_7arsymf6aatr3_2931187647.sql      >>>>此处为oracle自动生成的SQL固化脚本
on TARGET system in order to create a custom SQL Profile
with plan 2931187647 linked to adjusted sql_text.


COE_XFR_SQL_PROFILE completed.
SQL> @coe_xfr_sql_profile_7arsymf6aatr3_2931187647            >>>>手动执行上面生成的sql脚本
... ...
PL/SQL procedure successfully completed.

... ...
COE_XFR_SQL_PROFILE_7arsymf6aatr3_2931187647 completed     >>>>固化完成。

/*

#

select * from dba_sql_profiles;

*/

2.3 查看下当前会话

看是否还有相关慢sql。收集该表的统计信息和固化执行计划不会影响已经在执行的sql。

这些查询sql如果执行了好几个小时的话,问下业务能否kill。运行那么久没有结果感觉查询下去也没啥意义了,但是还是要谨慎kill,需要问下业务能否kill。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于c#,asp.net webform, sql server数据库,在线档案管理系统

详细视频: 【基于c#,asp.net webform, sql server数据库,在线档案管理系统包部署。-哔哩哔哩】 https://b23.tv/c1RsdRO

WebRTC SDK是什么?

​语音环境每年都在变,OKCC以前代理商的客群都是简单高效外呼为主,今年发现变化很大。很多代理商做的终端客户都是给其他业务系统赋能为主了。主流的还是以API对接为主,但是对接中发现webrtc SDK使用频率很高。 ​ ​那么什么是WebRTC SDK…

Vue3源码学习3-结合vitetest来实现mini-vue

文章目录 前言✅ 当前已实现模块汇总(mini-vue)✅ 每个模块简要源码摘要1. reactive.ts2. effect.ts3. computed.ts4. ref.ts5. toRef.ts6. toRefs.ts ✅ 下一阶段推荐目标所有核心模块对应的 __tests__ 测试文件,**带完整注释**✅ reactive.…

PH热榜 | 2025-04-30

1. Daytona 标语:安全且灵活的基础设施,用于运行你的人工智能生成的代码。 介绍:Daytona Cloud 为 AI 智能体重塑了基础设施,具备不到 90 毫秒的启动时间、原生性能以及有状态执行的能力,这些是传统云计算所无法实现…

Android compileSdkVersion、minSdkVersion、targetSdkVersion的关系以及和Unity的关系

compileSdkVersion、minSdkVersion、targetSdkVersion的关系 参考:https://mp.weixin.qq.com/s?__bizMzg5MzYxNTI5Mg&mid2247494238&idx1&sn06285667d3ac1339f6d2daae840cedc8&chksmc125565280f1ad3aa127774c2d1e59eb2818f89f0cb3ed4d72145faf619…

数据库的死锁相关(一)

目录 前言 一、什么死锁 二、产生死锁的必要条件 三、死锁发生的具体位置和场景 1. 数据行级别死锁(最常见) 2. 表级别死锁 3. 索引间隙锁死锁(InnoDB特有) 4. 外键约束死锁 5. 元数据锁死锁 6. 内存中的锁结构死锁 7.…

Three.js + React 实战系列-3D 个人主页:构建 Hero 场景组件(项目核心)✨

在本节中,我们将完成整个 3D 主业项目中最核心的组件 —— Hero.jsx。 这个组件作为首页的主视觉部分,整合了 3D 模型、动画相机、交互按钮与自适应布局,构建出一个立体、酷炫、可交互的主场景。 前置准备: ✅安装依赖&#xff…

Electron Forge【实战】桌面应用 —— 将项目配置保存到本地

最终效果 定义默认配置 src/initData.ts export const DEFAULT_CONFIG: AppConfig {language: "zh",fontSize: 14,providerConfigs: {}, };src/types.ts export interface AppConfig {language: zh | enfontSize: numberproviderConfigs: Record<string, Recor…

RPG4.设置角色输入

这一篇是进行玩家移动和视角移动的介绍。 1.在玩家内进行移动覆写 virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; 2.创建增强输入资产的变量创建 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category "CharacterD…

[实战] Petalinux驱动开发以及代码框架解读

目录 Petalinux驱动开发以及代码框架解读一、引言二、步骤2.1 创建PetaLinux工程2.2 配置硬件描述文件2.3 设备树配置2.4 建立驱动框架2.5 编辑 .bb 文件2.6 编写驱动文件2.7 编写 Makefile2.8 验证配方配置2.9 集成驱动到 RootFS2.10 全系统编译与部署2.11 启动验证 三、框架解…

[特殊字符] 开发工作高内存占用场景下,Windows 内存压缩机制是否应该启用?实测分析与优化建议

在日常开发中&#xff0c;我们往往需要同时运行多个高占用内存的工具&#xff0c;例如&#xff1a; IntelliJ IDEA VMware 虚拟机 多个 Java 后端程序 这些应用程序非常“吃内存”&#xff0c;轻松就能把 16GB、甚至 24GB 的物理内存用满。那么&#xff0c;Windows 的“内存…

嵌入式学习笔记 - HAL_xxx_MspInit(xxx);函数

使用cubeMX生成的HAL库函数中&#xff0c;所有外设的初始化函数HAL_xxx_Init(&xxxHandle)中都存在有此调用函数HAL_xxx_MspInit(xxx)&#xff0c;此调用函数其实是对各外设模块比如UART&#xff0c;I2C等控制器使用的的底层硬件进行初始化&#xff0c;包括时钟&#xff0c;…

Nginx — http、server、location模块下配置相同策略优先级问题

一、配置优先级简述 在 Nginx 中&#xff0c;http、server、location 模块下配置相同策略时是存在优先级的&#xff0c;一般遵循 “范围越小&#xff0c;优先级越高” 的原则&#xff0c;下面为你详细介绍&#xff1a; 1. 配置继承关系 http 块&#xff1a;作为全局配置块&…

WPF之TextBlock控件详解

文章目录 1. TextBlock控件介绍2. TextBlock的基本用法2.1 基本语法2.2 在代码中创建TextBlock 3. TextBlock的常用属性3.1 文本内容相关属性3.2 字体相关属性3.3 外观相关属性3.4 布局相关属性 4. TextBlock文本格式化4.1 使用Run元素进行内联格式化4.2 其他内联元素 5. 处理长…

华为云loT物联网介绍与使用

&#x1f310; 华为云 IoT 物联网平台详解&#xff1a;构建万物互联的智能底座 随着万物互联时代的到来&#xff0c;物联网&#xff08;IoT&#xff09;已成为推动数字化转型的关键技术之一。华为云 IoT 平台&#xff08;IoT Device Access&#xff09;作为华为云的核心服务之…

AnimateCC教学:形状补间动画的代码实现

核心代码: var shape; var animationProps = {width: 50,height: 50,cornerRadius: 0,color: "#00FF00" }; function init() { shape = new createjs.Shape();shape.x = 200;shape.y = 150;stage.addChild(shape);// 初始绘制updateShape();// 设置补间动画createTw…

Android学习总结之Retrofit篇

1. 注解原理概述 在 Java 里&#xff0c;注解是一种元数据&#xff0c;它为代码提供额外信息但不影响程序的实际逻辑。注解可以在类、方法、字段等元素上使用&#xff0c;并且能在编译时、运行时通过反射机制被读取。Retrofit 充分利用了 Java 注解机制&#xff0c;通过自定义…

windows11 编译 protobuf-3.21.12 c++

下载 protobuf 包&#xff0c;本文使用 3.21.12 版本&#xff0c;Gitub下载链接&#xff1a; Github官网 , 网盘下载&#xff1a; 网盘 如果电脑环境没有安装 cmake 则需要安装&#xff0c;本文测试使用 cmake-3.25.1 版本&#xff0c; 下载地址&#xff1a;[camke-3.25.1] (…

Java继承中super的使用方法

super 关键字在 Java 中用于访问父类的成员&#xff08;包括字段、方法和构造函数&#xff09;。当你在子类中调用父类的方法或访问父类的成员变量时&#xff0c;super 是必不可少的工具。 &#x1f511; super 的基本用法 1. 调用父类的构造方法 在子类的构造方法中&#x…

网络安全之浅析Java反序列化题目

前言 这段时间做了几道Java反序列化题目&#xff0c;发现很多题目都是类似的&#xff0c;并且可以通过一些非预期gadget打进去&#xff0c;就打算总结一下常见的题目类型以及各种解法&#xff0c;并提炼出一般性的思维方法。 正文 分析入口点 拿到题目&#xff0c;有附件最…