小白优化Oracle的利器”sqltrpt.sql”脚本

SQL调优顾问是Oracle自带的一个功能强大的内部诊断工具,用于对性能不佳的SQL语句给出优化建议。但如果从命令行调用它比较麻烦,幸运的是,Oracle提供了一个方便的内置脚本“sqltrpt.sql”,简化了调用过程。

sqltrpt.sql脚本位于Oracle主目录的/rdbms/admin/目录中。它会列出前15个最消耗资源的TOP SQL,您只需要输入需要优化的SQL的SQL_ID即可自动进行优化。

关于号主,姚远:

  • Oracle ACE(Oracle和MySQL数据库方向)
  • 华为云最有价值专家
  • 《MySQL 8.0运维与优化》的作者
  • 拥有 Oracle 10g、12c和19c OCM等数十项数据库认证
  • 曾任IBM公司数据库部门经理
  • 20+年DBA经验,服务2万+客户
  • 精通C和Java,发明两项计算机专利

以下是一个示例:

SQL>  @?/rdbms/admin/sqltrpt.sql15 Most expensive SQL in the cursor cache
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SP2-0246: Illegal FORMAT string "99,"
SQL_ID                  ELAPSED SQL_TEXT_FRAGMENT
3tdu16m07jbk8     525957.313858 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
1rpdpjs1a0nrq     500573.400376 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
9hs95x2v58b8x     497391.716878 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
55a46zxkgpdtb      485069.13023 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
28xj3j8qr4xum     475518.560608 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
0v5qacvm89vgw     473221.274866 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
9myxaahsdmmh2     457610.887908 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
3yqv69w8u5frx     413551.508816 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
4ghwp3827k97m       242328.0459 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
5ncgz7pyjh1us     230450.152185 UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTIT
f90zn75aphu4w     168059.994696 SELECT COUNT(DISTINCT (S_I_ID)) FROM ORDER_LINE, STOCK,
16dhat4ta7xs9      24442.679464 begin neword(:no_w_id,:no_max_w_id,:no_d_id,:no_c_id,:n
4g2g8zv8tr8vv       5337.656708 UPDATE DISTRICT SET D_YTD = D_YTD + :B3 WHERE D_ID = :B
04udrf68ccyk7        4622.33163 BEGIN slev(:st_w_id,:st_d_id,:threshold,:stocklevel); E
a4akgk9g69h83        3737.73572 SELECT d.* FROM ( SELECT d.*, ROWNUM ROW# FROM (SELECT15 Most expensive SQL in the workload repository
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Specify the Sql id
~~~~~~~~~~~~~~~~~~
Enter value for sqlid: 3tdu16m07jbk8
'SQLIDSPECIFIED:3TDU16M07JBK8'
Sql Id specified: 3tdu16m07jbk8Tune the sql
~~~~~~~~~~~~
DBMS_SQLTUNE.REPORT_TUNING_TASK(:TASK_NAME)
----------------------------------
GENERAL INFORMATION SECTION
-------------------------------------------------------------------------------
Tuning Task Name   : TASK_3748
Tuning Task Owner  : SYS
Workload Type      : Single SQL Statement
Scope              : COMPREHENSIVE
Time Limit(seconds): 1800
Completion Status  : COMPLETED
Started at         : 03/06/2024 10:55:29
Completed at       : 03/06/2024 10:55:53-------------------------------------------------------------------------------
Schema Name   : TPCC
Container Name: PDBPROD1
SQL ID        : 3tdu16m07jbk8
SQL Text      : UPDATE STOCK_ITEM SET S_QUANTITY = (CASE WHEN S_QUANTITY < (:B2 + 10 ) THEN S_QUANTITY + 91 ELSE S_QUANTITY END) - :B3WHERE I_ID = :B6 AND S_W_ID = :B5 AND I_ID = :B4 RETURNINGS_DIST_06, S_QUANTITY, I_PRICE * :B1 INTO :O0 ,:O1 ,:O2
Bind Variables: :3 -  (NUMBER):750434 -  (NUMBER):1635 -  (NUMBER):75043-------------------------------------------------------------------------------
FINDINGS SECTION (2 findings)
-------------------------------------------------------------------------------1- Index Finding (see explain plans section below)
--------------------------------------------------The execution plan of this statement can be improved by creating one or moreindices.Recommendation (estimated benefit: 99.99%)------------------------------------------- A potentially beneficial index exists already but is currently markedunusable.  Consider rebuilding the index so that the optimizer can use it.alter index TPCC.STOCK_I1 rebuild;Rationale---------Creating the recommended indices significantly improves the execution planof this statement. However, it might be preferable to run "Access Advisor"using a representative SQL workload as opposed to a single statement. Thiswill allow to get comprehensive index recommendations which takes intoaccount index maintenance overhead and additional space consumption.2- Alternative Plan Finding
---------------------------Some alternative execution plans for this statement were found by searchingthe system's real-time and historical performance data.The following table lists these plans ranked by their average elapsed time.See section "ALTERNATIVE PLANS SECTION" for detailed information on eachplan.id plan hash  last seen            elapsed (s)  origin          note-- ---------- -------------------- ------------ --------------- ----------------1 2892697577  2024-03-01/14:00:34        0.001 AWR             not reproducible2 4165137353  2024-03-05/13:45:45     1047.724 Cursor Cache    not reproducibleInformation------------ All alternative plans other than the Original Plan could not bereproduced in the current environment.- The plan with id 1 could not be reproduced in the current environment.For this reason, a SQL plan baseline cannot be created to instruct theOracle optimizer to pick this plan in the future.- The plan with id 2 could not be reproduced in the current environment.For this reason, a SQL plan baseline cannot be created to instruct theOracle optimizer to pick this plan in the future.
... Removed for simplicity

如果您需要优化的SQL语句不在`v$sql中,那是因为它没有保存在缓存中。如果这个SQL被AWR捕获,您可以通过查询dba_hist_sqltext找到它的SQL_ID:

select sql_id, sql_text from SYS.DBA_HIST_SQLTEXT
where  sql_text like '%SQL TEXT YOU WANT TO TUNE%';

但是,AWR只捕获 TOP SQL语句,而不是所有已执行的SQL语句。因此,您可能找不到它。如果这个问题重复出现,您可以告诉Oracle通过运行以下PL/SQL存储过程为这个SQL“着色”:

EXEC dbms_workload_repository.add_colored_sql('&SQL_ID');

这样可以确保它会保存在AWR中,即使它不是一个TOP SQL。

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

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

相关文章

安装/升级 gcc

文章目录 查看当前 gcc 版本查看 yum 软件库 gcc 版本列表下载最新版本安装 查看当前 gcc 版本 查看 yum 软件库 gcc 版本列表 只有一个4.8的版本&#xff0c;过旧 下载最新版本 wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz 安装 ./configure 报错 提示…

2024年Android开发者跳槽指南,超强Android进阶路线知识图谱

一、概述 随着业务的发展&#xff0c;工程的逐渐增大与开发人员增多&#xff0c;很多工程都走向了模块化、组件化、插件化道路&#xff0c;来方便大家的合作开发与降低业务之间的耦合度。现在就和大家谈谈模块化的交互问题&#xff0c;首先看下模块化的几个优势。 模块化的优…

国创证券|645元克!买还是不买?

近日世界金价继续走强。截至记者发稿&#xff0c;纽约商业交易所&#xff08;COMEX&#xff09;黄金主力4月合约突破2100美元/盎司关口&#xff1b;国内方面&#xff0c;SHFE黄金主力合约则摸高498元/克&#xff0c;迫临500元/克的关口。 巨丰投顾高级出资参谋游晓刚对《证券日…

替代TPS7B7701QPWPRQ1/TPS7B7702QPWPRQ1单/双通道 车规级LDO

PC8803具有高输入电压单低压差调节器&#xff08;PC8803SC01/PC8803SCO3&#xff09;/双通道低压差调节&#xff08;PC8803SC02/PC8803SC04&#xff09;&#xff0c;具有精确的电流感测&#xff0c;设计用于在宽输入电压范围内工作 从4.5V到40V。该设备具有45V负载转储电源输入…

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart&#xff1a;手指触摸动作开始 bindtouchmove&#xff1a;手指触摸后移动 bindend&#xff1a;手指触摸动作结束 属性类型说明touchesArray触摸事件&#xff0c;当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…

java可变参数使用

java可变参数使用 在Java中&#xff0c;可变参数是一种特殊的语法&#xff0c;允许方法接受可变数量的参数。可变参数在方法声明中使用省略号(...)来表示&#xff0c;可以接受任意数量的参数&#xff0c;甚至可以不传递参数。 可变参数只能做为函数的最后一个参数一个函数最多只…

MySQL中having和where的区别及应用详解

这篇文章主要给大家详细介绍了MySQL中having和where的区别以及他们的使用方法&#xff0c;文中有相关的代码示例&#xff0c;具有一定的参考价值,需要的朋友可以参考下 − 目录 having 和 where 区别having 和 where 应用总结&#xff1a; having 和 where 区别 having是对…

pgvector docker部署测试

docker pull pgvector/pgvector:pg16 运行 docker run --name pgvector --restartalways -e POSTGRES_USERpgvector -e POSTGRES_PASSWORDpgvector -v /srv/tlw/pgvectordata:/var/lib/postgresql/data -p 54333:5432 -d pgvector/pgvector:pg16 CREATE EXTENSION vector; --…

总结:大模型技术栈---算法与原理

原文地址&#xff1a;大模型技术栈-算法与原理 1. tokenizer方法 word-level char-level subword-level BPE WordPiece UniLM SentencePiece ByteBPE2. position encoding 绝对位置编码 ROPE AliBi 相对位置编码 Transformer-XL T5/TUPE DeBERTa3. 注意力机制 Mamba,H3,Hyena…

【Redis】Redis持久化模式RDB

目录 引子 RDB RDB的优缺点 小节一下 引子 不论把Redis作为数据库还是缓存来使用&#xff0c;他肯定有数据需要持久化&#xff0c;这里我们就来聊聊两种持久化机制。这两种机制&#xff0c;其实是 快照 与 日志 的形式。快照:就是当前数据的备份&#xff0c;我可以拷贝到磁…

C语言指针的初步认识--学习笔记(3)

1. 字符指针变量 在C语言中&#xff0c;字符串通常被视为字符数组&#xff0c;但它们可以有不同的表示方式。字符指针变量存储的是字符串的地址。这意味着&#xff0c;当你有一个字符串时&#xff0c;你可以通过改变字符指针的值来改变这个字符串&#xff0c;因为你实际上改变的…

保修期内经营者收取维修费用应遵循正当程序原则

↑↑↑“上海高院”头条号为您讲述精彩的法律科普内容 上海市第一中级人民法院在履行司法审判职能的同时&#xff0c;始终高度重视高质量案件工作&#xff0c;总结司法审判经验&#xff0c;努力提高司法审判质量。 在2020年全国法院系统优秀案例分析评选活动中&#xff0c;上海…

leetcode225.用栈实现队列

解法2:1个队列实现栈 思路&#xff1a;假如我有4个元素1,2,3,4需要入栈&#xff0c;push了之后就是顺着号是1,2,3,4如果我pop了&#xff0c;那我就先获取队列大小&#xff0c;每次先把头插入到队列末尾&#xff0c;然后删除头&#xff0c;循环执行size-1次&#xff0c;&#x…

合并有序链反转链表(递归版)

每日一题系列&#xff08;day 19&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50…

基于RFID技术+WMS仓储管理应用设计

一、项目背景 1.1 背景 仓储管理是企业对仓库及其内部物资进行计划、组织、控制和协调的管理过程。它在整个物流和经济活动中扮演着重要的角色&#xff0c;连接着生产者和消费者。 不同规模和产品种类的企业有不同的仓储管理流程和需求&#xff0c;但核心部分都包括仓库作业…

设计模式:策略模式 ⑥

一、策略模式思想 简介 策略模式&#xff08;Strategy Pattern&#xff09;属于对象的行为模式。其用意是针对一组算法&#xff0c;将每一个算法封装到具有共同接口的独立的类中&#xff0c;从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。…

msvcp120.dll丢失的解决方法,教你快速解决msvcp120.dll问题

msvcp120.dll是一个在Windows操作系统中至关重要的系统文件&#xff0c;它属于Microsoft Visual C Redistributable Package的一部分。这个动态链接库文件&#xff08;DLL&#xff09;包含了运行某些应用程序所必需的C运行时库函数。当某个程序在运行过程中需要调用这些预先编译…

关于制作一个Python小游戏(三)

目录 前言: 在前面我们已经了解过了关于制作pygame的使用和在里面游戏中的简单操作的内容了,今天我们主要讲的就是关于敌机的出现和如何去操控游戏中英雄飞机和敌机的出现 1.敌机的设计: 1.1敌机出场的实现: 1.1.1游戏启动后,每个一秒钟出现一架敌方飞机 1.1.2每架敌机向屏…

九章云极DataCanvas公司出席WBBA 2024宽带发展大会

2024年2月27日&#xff0c;由全球云网宽带产业协会&#xff08;World Broadband Association, WBBA&#xff09;主办的全球宽带产业盛会——宽带发展大会&#xff08;Broadband Development Congress, BDC&#xff09;&#xff0c;与全球云网宽带产业合作伙伴相约巴塞罗那。九章…

【爬虫】单首音乐的爬取(附源码)

以某狗音乐为例 import requests import re import time import hashlibdef GetResponse(url):# 模拟浏览器headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0}# 发送请求…