问题描述
嗨,汤姆斯团队,
首先感谢您使用 “问汤姆” 平台共享信息。
我的问题是
当我们对数据库运行任何sql时 (我的意思是简单的选择sql例如从双选择1),我们可以通过查询v $ sqlarea和v $ session (有时如果查询超过1000个字符,那么我们使用v $ sqltext) 来查看此信息
但同样不适用于以下:
1.如果我们一个接一个地执行具有多个sql语句的任何过程,那么在这种情况下,sql_text仅显示正在执行的过程,而不显示内部查询。我如何检查针对sql数据库内部过程执行的查询以及传递给它的参数 (如果有)?
2.类似地,当第三方应用程序从其代码执行sql查询时,我们可以检查使用v $ session/v $ sqlarea/v $ sqltext执行的sql吗?
据我所知,我的假设是这样的逻辑嵌入在AWR报告中,我们可以获得确切的sql id和sql文本,这消耗更多时间或昂贵。
因此,对于第1点和第2点,AWR报告中将提供查询。
因此,我们将知道如何从数据库视图而不是AWR中获取点1和2的信息?
提前感谢
苏米·帕瓦尔
首先感谢您使用 “问汤姆” 平台共享信息。
我的问题是
当我们对数据库运行任何sql时 (我的意思是简单的选择sql例如从双选择1),我们可以通过查询v $ sqlarea和v $ session (有时如果查询超过1000个字符,那么我们使用v $ sqltext) 来查看此信息
但同样不适用于以下:
1.如果我们一个接一个地执行具有多个sql语句的任何过程,那么在这种情况下,sql_text仅显示正在执行的过程,而不显示内部查询。我如何检查针对sql数据库内部过程执行的查询以及传递给它的参数 (如果有)?
2.类似地,当第三方应用程序从其代码执行sql查询时,我们可以检查使用v $ session/v $ sqlarea/v $ sqltext执行的sql吗?
据我所知,我的假设是这样的逻辑嵌入在AWR报告中,我们可以获得确切的sql id和sql文本,这消耗更多时间或昂贵。
因此,对于第1点和第2点,AWR报告中将提供查询。
因此,我们将知道如何从数据库视图而不是AWR中获取点1和2的信息?
提前感谢
苏米·帕瓦尔
专家解答
你对 (1) 的假设是不正确的。如果您的过程包含3个sql,那么在v $ sql中,您将调用该过程 (作为一个sql_id) * 和 * 调用每个sql (作为他们自己的sql_id)。
根据你看 (说) v $ session,sql_id将反映 * 当前 * 正在运行的一个 (例如,如果你在plsql proc中,而不是运行sql '现在',你会看到sql_id调用的proc)。
关于v $ sql的一件好事是,有PROGRAM_xxx列,它们指示从其启动sql命令的plsql程序的object_id和行号。您可以使用它将运行不佳的sql链接回源代码。
另一件事-如果您正在寻找有关sql性能的统计信息,则查询v $ sqlstats的效率更高
根据你看 (说) v $ session,sql_id将反映 * 当前 * 正在运行的一个 (例如,如果你在plsql proc中,而不是运行sql '现在',你会看到sql_id调用的proc)。
关于v $ sql的一件好事是,有PROGRAM_xxx列,它们指示从其启动sql命令的plsql程序的object_id和行号。您可以使用它将运行不佳的sql链接回源代码。
另一件事-如果您正在寻找有关sql性能的统计信息,则查询v $ sqlstats的效率更高
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




