我有一段代码,其中调用了其他程序。示意图如下所示:
begin
procedure_0;
procedure_1;
procedure_2;
....
end;
在被调用的过程中,执行各种 DDL 和 DML。所有这些建设工作的时间长得令人无法接受。我有sql_id这个来自 EM 的块。我想以某种方式sql_id为这个块建立一个所有孩子的层次结构,看看在哪里花费了多少时间。
请告诉我如何解决这个问题?
我有一段代码,其中调用了其他程序。示意图如下所示:
begin
procedure_0;
procedure_1;
procedure_2;
....
end;
在被调用的过程中,执行各种 DDL 和 DML。所有这些建设工作的时间长得令人无法接受。我有sql_id这个来自 EM 的块。我想以某种方式sql_id为这个块建立一个所有孩子的层次结构,看看在哪里花费了多少时间。
请告诉我如何解决这个问题?
使用 11.1 版中提供的 PL/SQL 分析器可以轻松解决该任务。
该功能是默认安装的。您只需要授予
EXECUTE包权限DBMS_HPROF并在模式中创建几个表:试用包:
这是运行和分析分析器数据的方法:
查询和结果:搜索
sql_id和执行时间(以微秒为单位):有关详细信息,请参阅使用 PL/SQL Hierarchical Profiler 。