Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找称为SQL\u ID的PL/SQL包_Sql_Oracle_Plsql - Fatal编程技术网

查找称为SQL\u ID的PL/SQL包

查找称为SQL\u ID的PL/SQL包,sql,oracle,plsql,Sql,Oracle,Plsql,我们有一个特定的SQL_ID存在性能问题(例如cd123812jedjdu)。从PKG1调用的AWR报告中可以看出这一点。但是,PKG1在内部调用了很多包,如下所示: PKG1.MAIN -> PKG1.PROC1 -> -> PKG2.PROC1 -> -> PKG2.PROC2 -> -> PKG2.PROC3 -> PKG1.PROC2 -> -> PKG3.PROC1 -> -> PKG3.PROC2 -> -

我们有一个特定的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文本可以是来自
v$
视图的查询,但是有多个类似的查询具有相同的SQL文本。

是或可能

这取决于您的Oracle版本,以及您是否使用PL/Scope编译了PL/SQL

在版本12cR2和更高版本中,有一个新的视图。它跟踪PL/SQL中使用的SQL,并包括SQLID

我谈论


您不需要使用PL/Scope,当查询被硬解析时,您需要的信息已经存储在
v$sql
中(当然,如果相同的查询出现在多个代码段中,则只会出现硬解析的查询,除非有足够的差异触发额外的子光标)

您关心的列是
program\u id
,它最多匹配
dba\u对象。object\u id
。它还将告诉您SQL出现在
program#u line.
下的行号


这是一个例子。这些列至少从Oracle 10.2开始就存在了。

它可能在v$sql上,也可能不在v$sql上……不过添加得不错。