oracle – 如何为整个存储过程生成解释计划

我通常在sqlplus中使用以下代码生成解释计划:

SET AUTOTRACE ON
SET TIMING ON
SET TRIMSPOOL ON
SET LINES 200
SPOOL filename.txt
SET AUTOTRACE TRACEONLY;

{query goes here}

SPOOL OFF
SET AUTOTRACE OFF

但是如果我想为存储过程生成解释计划呢?

有没有办法为整个存储过程生成解释计划? SP没有输入/输出参数.

您正在生成的内容被正确地称为“执行计划”. “解释计划”是用于生成和查看执行计划的命令,就像您的示例中的AUTOTRACE TRACEONLY一样.

根据定义,执行计划适用于单个SQL语句. PL / SQL块没有执行计划.如果它包含一个或多个SQL语句,那么每个语句都将具有执行计划.

一种选择是从PL / SQL代码手动提取SQL语句并使用您已经显示的过程.

另一种选择是激活SQL跟踪然后运行该过程.这将在服务器上生成一个跟踪文件,其中包含会话中执行的所有语句的执行计划.跟踪是相当原始的形式,因此通常最容易使用Oracle的TKPROF工具对其进行格式化;还有各种第三方工具可以处理这些跟踪文件.

相关文章
相关标签/搜索