DECLARE
v_run_no binary_integer;
v_run_time_in_sec number;
BEGIN
dbms_profiler.start_profiler('Profiling my proc', 'Tom', v_run_no);
schema.my_package.my_proc();
dbms_profiler.stop_profiler();
-- Calculate the TOTAL_TIME for each unit in the run by summing the TOTAL_TIME
-- from each data record in the unit and writing it to the TOTAL_TIME column
-- in the plsql_profiler_units table.
dbms_profiler.rollup_run(v_run_no);
-- Grab total run time for display
SELECT r.RUN_TOTAL_TIME / 1000000000
INTO v_run_time_in_sec
FROM ucms_crim_conv.plsql_profiler_runs r
WHERE r.RUNID = v_run_no;
dbms_output.put_line('Profiled as run ' || v_run_no || ' in ' || v_run_time_in_sec || ' total sec.');
END;
我已经运行了相同的脚本来分析不同的过程调用,只更改行schema.my_package.my_proc();
来调用不同的过程,一切都很好。
TOTAL_TIME
这一次,脚本完成后,我可以在表中看到运行 id的列中有一个值的行plsql_profiler_runs
。
以前我还会在 中看到 2 行plsql_profiler_units
,其中 1 行用于匿名调用块,1 用于正在分析的过程,plsql_profiler_data
每个单元都有关联的行。然而,这一次,我只看到 中的匿名块plsql_profiler_units
,并且这个运行 id 的唯一plsql_profiler_data
记录是调用匿名块的记录,而不是过程本身,这显然是我感兴趣的。
为什么会发生这种情况?我可以做些什么来修复它并查看我的程序的数据?