温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现通过AWR报告中记录的SQL Id获得SQL语句的执行

发布时间:2021-11-08 17:25:40 来源:亿速云 阅读:246 作者:柒染 栏目:建站服务器

这篇文章给大家介绍如何实现通过AWR报告中记录的SQL Id获得SQL语句的执行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

获得sql的执行计划的方法很多,例如解释和SQL跟踪等的计划。
这里给大家介绍另外一种方法.这种方法可以很方便和awr报告相结合.对于在生成的awr报告中被发现的消耗资源较多的sql语句,我们可以使用awr提供的awrsqrpt.sql脚本达到获取sql语句执行计划的目的。

1.下面是以获得sql ID为“8p23kcbgfqnk 4”的sql语句的执行计划为例,展示一下这个过程。
SQL>@?/rDBMS/admin/awrsqrpt.sql

当前实例
~~~~~~~~~~~~~~~~

数据库ID DB名称inst num实例
----------- ------------ -------- ------------
1922648773 HSW 1 HSW


指定报表类型
~~~~~~~~~~~~~~~~~~~~~~~
您想要HTML报告还是纯文本报告?
为HTML报告输入‘html’,为纯文本输入‘text’
默认为“html”
输入Report_type的值:Text

指定类型:文本


此WorkloadRepository模式中的实例
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

数据库ID在num DB名称实例主机中
------------ -------- ------------ ------------ ------------
*1922648773 1 HSW HSW HOUSW-LT

数据库ID使用1922648773
使用1作为实例编号


指定要从中选择的快照天数。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入天数(N)将导致最近的
(N)列出快照的天数。按<Report>不按
指定数字列表所有已完成的快照。


输入num_d数的值:3

列出最后3天完成快照

卡扣
实例DB名称SnapID快照启动级别
------------ ------------ --------- ------------------ -----
HSW 1 14 2010年9月1日12:00 1
2010年9月2日13:00 1
2010年9月3日14:00 1
2010年9月4日15:00 1

2010年9月5日16:04 1
2010年9月6日17:00 1
2010年9月7日22:50 1



指定开始和结束快照ID
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输入BEGIN_Snap的值:6
指定的开始快照ID:6

输入End_Snap的值:7
指定的结束快照ID:7




指定SQL ID
~~~~~~~~~~~~~~~~~~
输入SQL_id的值:8p23kcbgfqnk4
指定的SQL ID:8p23kcbgfqnk 4

指定报表名称
~~~~~~~~~~~~~~~~~~~~~~~
默认的报表文件名是awrsqlrpt_1_6_7.txt。要使用这个名字,
按<back>继续,否则输入替代方案。

输入Report_name的值:8p23kcbgfqnk4

使用报表名8p23kcbgfqnk 4


工作负载库SQL报告

快照期间摘要

DB名称DBID实例Instnum发布RAC主机
------------ ----------- ------------ -------- ----------- --- ------------
HSW 1922648773 HSW 1 10.2.0.3.0无HOUSW-LT

快速ID捕捉时间会话CURS/Sess
            --------- ------------------- -------- ---------
开始快照:6 14-9月10日17:00:12 15 2.3
结束时间:7 14-9月10日22:50:29 17 2.3
运行时间:350.29分钟(分钟)
DB时间:0.02(分钟)

SQL摘要DB/Inst:HSW/HSW快照:6-7

经过
SQL ID时间(MS)
------------- ----------
8p23kcbgfqnk 4 19,672
从seg$中选择文件#,块#,ts#,其中类型为#=3

          -------------------------------------------------------------

SQL ID:8p23kcbgfqnk4db/inst:HSW/HSW快照:6-7
>第一次捕获和最后一次捕获快照ID
参考快照ID,在快照范围内使用
>从seg$中选择文件#、块#、ts#,其中类型为#=3

计划哈希总计经过的第一次捕获最后一次捕获
#值时间(Ms)执行快照ID
--- ---------------- ---------------- ------------- ------------- --------------
1   1605285479                 19,672             1             7              7
          -------------------------------------------------------------


计划1(PHV:1605285479)
-----------------------

计划统计DB/INST:HSW/HSW快照:6-7
>%TotalDB时间是SQL语句除以的时间
到数据库总时间乘以100

每次执行%Snap的STATNAME语句
---------------------------------------- ---------- -------------- -------
所用时间(毫秒)19,672 19,672.2 1351.7
CPU时间(Ms)32 32.3 79.6
处决1个N/A/N/A
缓冲区获取141 141.0 0.6
磁盘读取0 0.0 0.0
解析调用11.00.1
行0 0.0 N/A
用户I/O等待时间(MS)0 N/A N/A
簇等待时间(MS)0 N/A N/A
申请等待时间(Ms)0 N/A N/A
并发等待时间(MS)0 N/A N/A
无效0 N/A N/A
版本计数1 N/A N/A
可共享Mem(KB)12 N/A N/A
          -------------------------------------------------------------

执行计划
--------------------------------------------------------------------------
\x{e76f}\x{e76f}
--------------------------------------------------------------------------
\x{e76f}\x{e76f
*
--------------------------------------------------------------------------



全SQL文本

SQL ID SQL文本
------------ -----------------------------------------------------------------
8p23kcbgfqnk选择文件#,块#,ts#从seg$where类型#=3


书面报告给8p23kcbgfqnk 4

2.小结
在知道SQL ID的前提下,我们可以使用Oracle自带的awrsqrpt.sql脚本快速的获得SQL语句的执行计划信息(在上述报告中显示的信息不局限于此)。

关于如何实现通过AWR报告中记录的SQL Id获得SQL语句的执行就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI