Oracle - временная выборка из v $ session_longops - PullRequest
1 голос
/ 28 апреля 2010

Я пытаюсь отследить производительность некоторых процедур, которые работают слишком медленно (и, похоже, продолжают работать медленнее). Я использую v $ session_longops для отслеживания объема выполненной работы, и у меня есть запрос (sofar/((v$session_longops.LAST_UPDATE_TIME-v$session_longops.start_time)*24*60*60)), который сообщает мне, с какой скоростью выполняется работа.

То, что я хотел бы сделать, это зафиксировать скорость, с которой выполняется работа, и то, как она меняется со временем. Прямо сейчас я просто повторяю запрос вручную, а затем копирую / вставляю в Excel. Не очень оптимально, особенно когда телефон звонит или что-то еще прерывает мою частоту дискретизации.

Есть ли способ заставить скрипт в SQL * Plus запускать запрос evern n секунд, буферизовать результаты в файл, а затем продолжать делать это до завершения задания?

(Oracle 10g)

Ответы [ 2 ]

3 голосов
/ 28 апреля 2010

Сценарист Tanel Poder script прекрасно справляется с активным мониторингом производительности. Имеет параметры для

<seconds_in_snap> - the number of seconds between taking snapshots
<snapshot_count>  - the number of snapshots to take ( maximum value is power(2,31)-1 )

Он использует PL / SQL и вызов DBMS_LOCK.SLEEP

1 голос
/ 28 апреля 2010

Если вы можете жить с запущенным PL / SQL вместо сценария SQL * Plus, вы можете рассмотреть возможность использования планировщика Oracle. См. Главы 26 , 27 и 28 Руководства администратора базы данных Oracle .

...