Oracle DBMS_PROFILER仅在结果表中显示Anonymous
发布时间:2021-01-17 11:07:10 所属栏目:百科 来源:网络整理
导读:我是DBMS_PROFILER的新手.我看到的所有示例都使用一个简单的顶级过程来演示探查器的使用,并从那里获取所有行号等.我在包中部署所有代码,我很难让我的配置文件会话填充plsql_profiler_units包含有用的数据.我的大多数运行看起来像这样: RUNID RUN_COMMENT
|
我是DBMS_PROFILER的新手.我看到的所有示例都使用一个简单的顶级过程来演示探查器的使用,并从那里获取所有行号等.我在包中部署所有代码,我很难让我的配置文件会话填充plsql_profiler_units包含有用的数据.我的大多数运行看起来像这样: RUNID RUN_COMMENT UNIT_OWNER UNIT_NAME SECS PERCEN
----- ----------- ----------- -------------- ------- ------
5 Test <anonymous> <anonymous> .00 2.1
Profiler
5 Test <anonymous> <anonymous> .00 2.1
Profiler
5 Test <anonymous> <anonymous> .00 2.1
Profiler
我刚刚根据所有示例嵌入了对dbms_profiler.start_profiler,flush_data和stop_profiler的调用.主要区别在于我的代码在一个包中,并调用其他包.您是否需要分析调用堆栈中的每个存储过程?如果这样使这个工具有点无用! 我已经检查了http://www.dba-oracle.com/t_plsql_dbms_profiler.htm的提示,以及其他类似的网站. 解决方法您确定从plsql_profiler_units检索数据时查询不是问题吗?我试过这个: Create Procedure sub_procedure As
Begin
dbms_output.put_line('test');
End;
Create Package test_package As
Procedure test;
End;
Create Package Body test_package As
Procedure test As Begin
For i In 1 .. 10 Loop
If(i<=5) Then
sub_procedure;
End If;
End Loop;
End;
End;
Begin
DBMS_PROFILER.start_profiler(SYSDATE);
test_package.test;
DBMS_PROFILER.stop_profiler;
End;
而这个简单的查询 Select uni.unit_name,dat.line#,dat.total_occur
From plsql_profiler_data dat
Join plsql_profiler_units uni On ( uni.runid = dat.runid
And uni.unit_number = dat.unit_number )
给我预期的结果,显示包和程序: <anonymous> 1 0 <anonymous> 2 0 <anonymous> 3 2 <anonymous> 4 1 <anonymous> 5 0 TEST_PACKAGE 2 0 TEST_PACKAGE 3 11 TEST_PACKAGE 4 5 TEST_PACKAGE 5 6 TEST_PACKAGE 8 1 SUB_PROCEDURE 1 0 SUB_PROCEDURE 3 5 SUB_PROCEDURE 4 5 (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

