2012-01-25 4 views
3

Кто-нибудь знает, есть ли способ проверить статус выполняемого в настоящее время задания в базе данных или состояние того, сколько% фактически было выполнено.Проверить статус sql-запрос или процент

Я выполняю задание, но работа занимает много времени, поэтому я хотел бы проверить, сколько% выполнено из запроса. Я выполняю запрос в Oracle sqldeveloper

ответ

2

Из-за специфики SQL и обработки базы данных на основе набора вы действительно не можете получить «% полной» запроса, так как механизм oracle действительно не знает точно , Вы можете попробовать посмотреть v $ session_longops, чтобы узнать, как далеко продвинулись по части вашего SQL (здесь может появиться большое хеш-соединение или полное сканирование таблицы). Взгляните на this Ask Tom для получения дополнительной информации.

Если ваша работа имеет несколько операторов SQL, и вы пытаетесь отслеживать, насколько далеко вы находитесь после каждого из них, вы можете добавить код для вставки обновлений статуса в таблицу управления после каждого утверждения.

+0

thanx the v $ session_longops работал отлично – Eve

+1

Вам не нужен дополнительный «контрольный стол». Вы можете использовать 'DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS' для« перехвата »в v $ session_longops из вашего собственного кода. http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_appinf.htm#i996999 –

+0

Я говорил о отслеживании набора операторов SQL, выполняемых в хранимой процедуре - OP не был ясен в отношении того, это было одно заявление или группа, которую она хотела отследить, - она ​​просто сказала «работа в базе данных» - и я бы не советовал использовать longops для отслеживания вашей бизнес-логики, лучше иметь постоянный магазин, которым вы управляете, чтобы вы может вернуться и посмотреть. –

0

Столбец output_rows в этом запросе может быть полезен, если ваш запрос отсутствует в v$session_longops. Проблема в том, что вы не знаете, что такое итоговые строки.

select plan_operation, plan_options, plan_object_name, plan_object_type, plan_bytes, plan_time, plan_cpu_cost, plan_io_cost, output_rows, workarea_mem 
from v$sql_plan_monitor 
where sid = 2646 
and status = 'EXECUTING' 
order by plan_line_id 
Смежные вопросы