获取存储过程 sqlplus 的执行计划

Posted

技术标签:

【中文标题】获取存储过程 sqlplus 的执行计划【英文标题】:obtaining an execution plan on stored procedure sqlplus 【发布时间】:2012-05-23 19:53:10 【问题描述】:

所以我对使用 sqlplus 和查看执行计划还很陌生。 我通常做的如下:

set timing on;
set autotrace on;
"sql statement goes here"

我知道这通常是针对简单/单独的 sql 语句执行的,而您不能对存储过程执行相同的操作。

但我想知道是否要从存储过程中取出所有 sql 语句并将它们放入脚本中,然后一个接一个地运行。或者只是运行整个过程。有没有办法可以将每个执行计划记录到一个 txt 文件中,以便我查看它们。

或者有没有办法查看存储过程的执行计划?

非常感谢任何帮助或建议。谢谢

【问题讨论】:

您必须使用EXPLAIN PLAN 手动执行一个/一个语句,但不能为整个 SP 完成。 【参考方案1】:

我还没有尝试过,但我认为你可以。 DBMS_XPLAN.DISPLAY_CURSOR 使用 sql_id。您必须在过程中查找 DML 语句的 sql_id,这可能有点麻烦,但我认为它们应该在缓存中保留足够长的时间。

如果您尝试分析 PL/SQL 块的性能,您可能还想查看DBMS_PROFILER。

【讨论】:

以上是关于获取存储过程 sqlplus 的执行计划的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQLPlus 查看 Oracle 存储过程?

MySQL存储过程显示出一条sql执行用时?

Oracle中执行存储过程call和exec区别

(18)存储过程

怎样让sqlserver后台定时执行某个存储过程

如何显示存储过程的执行计划?