Иногда приходится проверять, как поведет себя система, при изменении данных несколькими сессиями одновременно. Для такого тестирования, я создал процедуру run_jobs:
create or replace procedure run_jobs(p_count in number
,p_cmd in varchar2)
as
l_jobnum number:=0;
begin
for i in 1..p_count
loop
dbms_job.submit(l_jobnum, p_cmd, sysdate);
end loop;
commit;
end;
/
в которую передаю следующие параметры:
p_count- количество потоков
p_cmd - то что нужно выполнить в несколько потоков
Пример вызова:
exec run_jobs(10000, 'insert into test values(1, ''z'');');
exec run_jobs(10000, 'begin ..... end;');
exec run_jobs(10000, 'do_something;');
В первом примере вы создаем 10000 джобов для инсерта данных в таблицу test. Второй пример - это вызов PL/SQL блока и третий пример, это вызов заранее подготовленной процедуры.
create or replace procedure run_jobs(p_count in number
,p_cmd in varchar2)
as
l_jobnum number:=0;
begin
for i in 1..p_count
loop
dbms_job.submit(l_jobnum, p_cmd, sysdate);
end loop;
commit;
end;
/
в которую передаю следующие параметры:
p_count- количество потоков
p_cmd - то что нужно выполнить в несколько потоков
Пример вызова:
exec run_jobs(10000, 'insert into test values(1, ''z'');');
exec run_jobs(10000, 'begin ..... end;');
exec run_jobs(10000, 'do_something;');
В первом примере вы создаем 10000 джобов для инсерта данных в таблицу test. Второй пример - это вызов PL/SQL блока и третий пример, это вызов заранее подготовленной процедуры.
Комментариев нет:
Отправить комментарий