Pull to refresh

Comments 9

Спасибо! Много лет пользуюсь PL/SQL Developer, а о такой возможности узнал только сейчас.
Отличная статья, спасибо! Ждем продолжения.
А это профилирование изолированно от реальных данных?
Конкретно этот пример был показан для выявления проблем на тестовой/разработческой среде. Можно конкретнее в чем заключается вопрос?
Ну то есть, если у меня уже есть написанные процедуры и я хочу найти в них слабое место. Выполнение профилирования отразится на таблицах, которые учавствуют в процедуре? Или это будет сделано без коммита данных?
Это зависит от того как ты сам управляешь транзакцией: если у тебя где-либо в коде стоит фиксация транзакции, то данные естественно зафиксируются, если нет — то нет. Если нет фиксации транзакций, то можешь в тестовом окне(рисунок 2) поставить rollback.
В принципе, PL/SQL Developer использует тот же DBMS_PROFILER (кстати, есть еще иерархический профайлер ).
Для большей автоматизации иногда удобнее пользоваться своими запросами к этим же таблицам. Вот рыба для них:
select r.runid
      ,r.related_run
      ,r.run_owner
      ,r.run_date
      ,r.run_comment
      ,r.run_total_time
      ,r.run_system_info
      ,r.run_comment1
      ,u.unit_number
      ,u.unit_type
      ,u.unit_owner
      ,u.unit_name
      ,d.line#
      ,s.TEXT
      ,u.total_time
      ,d.total_occur
      ,d.total_time
      ,d.min_time
      ,d.max_time      
from plsql_profiler_runs r
     join plsql_profiler_data d
          on  r.runid = d.runid
     join plsql_profiler_units u
          on  d.runid = u.runid
          and d.unit_number = u.unit_number
     left join all_source s
          on  u.unit_owner = s.OWNER
          and u.unit_name  = s.NAME 
          and u.unit_type  = s.TYPE 
          and d.line#      = s.LINE
where 1=1
--  and r.run_owner = user -- запуски от текущей юзера
--  and r.runid = (select max(runid) from plsql_profiler_runs where run_owner=user) -- последний запуск
order by r.runid,r.related_run,u.unit_number,d.line#;
В нем (PLSQL Dev) удобно еще дебажить.
Спасибо за статью.
Хотелось бы добавить, что двойной клик по строке в профайлере в PL/SQL Dev переводит к соответствующей строке исходного кода. Это полезно, когда в тестовом окне вызываются пакетные функции. Разумеется, пакет не должен быть скомпилирован нативно.
Sign up to leave a comment.

Articles

Change theme settings