gpt4 book ai didi

sql - 查找调用 SQL_ID 的 PL/SQL 包

转载 作者:行者123 更新时间:2023-12-03 23:33:20 26 4
gpt4 key购买 nike

我们有某个 SQL_ID 存在性能问题(例如 cd123812jedjdu)。这在从 PKG1 调用的 AWR 报告中显示。然而,PKG1 内部调用了这么多包,如下所示:

PKG1.MAIN
-> PKG1.PROC1
-> -> PKG2.PROC1
-> -> PKG2.PROC2
-> -> PKG2.PROC3
-> PKG1.PROC2
-> -> PKG3.PROC1
-> -> PKG3.PROC2
-> -> PKG3.PROC3
-> PKG1.PROC3
-> -> PKG4.PROC1
-> -> PKG4.PROC2
-> -> PKG4.PROC3
-> PKG1.PROC4
-> -> PKG5.PROC1
-> -> PKG5.PROC2
-> -> PKG5.PROC3
经过数小时的跟踪,我发现它是从 PKG4.PROC3 调用的。 .
无论如何我可以找到调用 SQL_ID 的实际 PL/SQL 包,也许是 v$意见?
注意:我知道 SQL_TEXT 可以是来自 v$ 的查询 View ,但有多个具有相同 SQL_TEXT 的类似查询。

最佳答案

您不需要使用PL/Scope,您需要的信息已经存储在v$sql当查询被硬解析时(当然,如果您有相同的查询出现在多段代码中,则只会出现硬解析的查询,除非有足够的差异来触发额外的子游标)。
您关心的栏目是program_id它最多匹配 dba_objects.object_id .它还会告诉您 SQL 出现在 program_line# 下的行号.
这是一个 quick LiveSQL demo .这些列至少从 Oracle 10.2 开始就已经存在。

关于sql - 查找调用 SQL_ID 的 PL/SQL 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66646391/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com