2010-04-27 2 views
1

Я пытаюсь отслеживать производительность некоторых процедур, которые работают слишком медленно (и, похоже, продолжают замедляться). Я использую 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)

ответ

3

Snapper 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

+0

Я не уверен, что у меня есть доступ к планировщику, поэтому я дам этот вид. – FrustratedWithFormsDesigner

+0

Посмотрел сценарий, хорошо! +1 –

+0

У меня еще не было возможности запустить это, но администратор базы данных действительно любит его и планирует что-то с этим сделать, поэтому я думаю, что это ответ! – FrustratedWithFormsDesigner

1

Если вы можете жить с управлением PL/SQL вместо SQL * Plus скрипт, вы могли бы рассмотреть вопрос об использовании Oracle Scheduler. См. Главы 26, 27 и 28 из Oracle Database Administrator's Guide.

Смежные вопросы