Для того, чтобы отразить в
V$SESSION_LONGOPS состояние нескольких одновременных длительных операций - например, общее выполнение процесса и конкретный большой шаг - нужно сохранять значение параметра
slno процедуры
DBMS_APPLICATION_INFO.set_session_longops. Используя затем пару значений (
rindex,
slno), можно менять необходимую строку в
V$SESSION_LONGOPS.
Вот пример работы с двумя длительными операциями:
declare
first_row pls_integer := dbms_application_info.set_session_longops_nohint;
second_row pls_integer := dbms_application_info.set_session_longops_nohint;
slno1 pls_integer;
slno2 pls_integer;
begin
dbms_application_info.set_session_longops(rindex => first_row
,slno => slno1
,op_name => '1_op'
,sofar => 1
,totalwork => 2
,units => 'step'
);
dbms_application_info.set_session_longops(rindex => second_row
,slno => slno2
,op_name => '2_op'
,sofar => 1
,totalwork => 1
,units => 'step'
);
dbms_application_info.set_session_longops(rindex => first_row
,slno => slno1
,op_name => '1_op'
,sofar => 2
,totalwork => 2
,units => 'step'
);
end;
/
select MESSAGE from v$session_longops where (sid,serial#) =
(select sid,serial# from v$session where audsid = USERENV('SESSIONID'));
Тема на
SQL.RU:
set_session_longops Можно ли вернуться к предидущей строке?
Читать далее