Oracle DBMS_PROFILER только показывает Анонимный в таблицах результатов

Я плохо знаком с DBMS_PROFILER. Все примеры, которые я видел, используют простую процедуру верхнего уровня, чтобы продемонстрировать использование профилировщика и оттуда получить все номера строки и т.д. Я развертываю весь код в пакетах, и я испытываю большие затруднения, заставляя мою сессию профиля заполнить plsql_profiler_units с полезными данными. Большинство моих выполнений похоже на это:

RUNID RUN_COMMENT UNIT_OWNER  UNIT_NAME         SECS PERCEN
----- ----------- ----------- -------------- ------- ------
5     Test                 .00    2.1
      Profiler

5     Test                 .00    2.1
      Profiler

5     Test                 .00    2.1
      Profiler

Я только что встроил вызовы в dbms_profiler.start_profiler, flush_data и stop_profiler согласно всем примерам. Основное различие - то, что мой код находится в пакете и призывает к другому пакету. Необходимо ли представить каждую хранимую процедуру в стеке вызовов? Раз так это делает этот инструмент немного бесполезным!

Я проверил http://www.dba-oracle.com/t_plsql_dbms_profiler.htm на подсказки среди других подобных сайтов.

5
задан Peter Lang 28 May 2010 в 10:23
поделиться

1 ответ

Вы уверены, что это не проблема с вашим запросом на получение данных из 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
4
ответ дан 15 December 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: