暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

脚本分享 - 查询sql_id的语句和变量

原创 西瓜你个吧啦 2024-05-09
819


搞了辣么多年DBA,总有点小东西可以分享下,技术又不好,就分享点脚本吧


这玩意干啥用的?      赶时间的直接复制脚本,不用看描述

单纯就是查语句,在日常维护中看到缺少不了优化sql的时候。优化的时候发现一堆变量,我应该如何获取,大部分是不是都直接找开发或者业务要数据。这里提供了一个简单的法子。直接自己动手丰衣足食。

查询sql信息必须要知道两个关键词sql_id和child_number,当然不用child_number也可以,这样就把所有的都查出来。那么这两个字段啥意思呢?

算了我帮你们百度下吧:

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

在Oracle数据库中,sql_id 和 child_number 是两个与SQL执行计划相关的概念,它们经常出现在VSQL、VSQL_PLAN等动态性能视图中。

  1. sql_id

    • sql_id 是一个唯一的标识符,用于标识SQL语句。Oracle在解析SQL语句时生成这个标识符,它基于SQL文本的一个哈希值。
    • 即使两个SQL语句在文本上只有很小的差异(例如,一个数字或一个字符串的不同),它们也可能会有不同的 sql_id
    • 使用 sql_id 可以方便地跟踪、查找和分析特定的SQL语句及其性能。
  2. child_number

    • 一个SQL语句可能有多个“子执行计划”,这通常是由于使用了绑定变量(bind variables)并且这些绑定变量的数据类型或值的不同导致优化器选择了不同的执行计划。
    • 每个子执行计划都有一个唯一的 child_number。对于不使用绑定变量的SQL语句,通常只有一个子执行计划,其 child_number 为0。
    • 当使用绑定变量时,Oracle可能会为每个不同的绑定值或数据类型组合创建一个新的子执行计划,并将其存储在共享池中。
    • 通过查询V$SQL_PLAN或其他相关视图,并指定 sql_id 和 child_number,您可以查看特定SQL语句的特定子执行计划的详细信息。

这两个标识符一起使用,可以精确定位和分析数据库中的特定SQL语句及其执行计划。

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

是的就是上面的意思,通过两个参数确定语句和他的变量获取我们需要的信息


--显示SQLID信息和SQL语句还有变量信息 --- RAC可用

select a.sql_id,
a.child_number,
to_char(a.sql_fulltext),/*sql字符大于4000要改成a.sql_fulltext*/
b.value_string
from gv$sql a left join (select distinct sql_id,
child_number,
listagg(name || '=' || value_string, ',') within group(order by name || value_string) over(partition by sql_id, child_number) value_string
from (select distinct sql_id, child_number, name, value_string
from gv$sql_bind_capture)) b
on a.sql_id = b.sql_id
and a.child_number = b.child_number
where a.sql_id = '19x7krkx84000' and a.child_number=0


结果展示:



说实话我觉着作者废话真多,哎没法这玩意有要求的吗。

最后修改时间:2024-05-09 09:10:59
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论