2013-08-13 3 views
1

Я пытаюсь выяснить DBMS_SCHEDULER (Oracle 11g) оракула и нужна помощь в настройке следующее:оракул DBMS_SCHEDULER запускать несколько процедур параллельно

У меня есть процедура, которая вызывает список других процедур, как это:

CREATE OR REPLACE 
PROCEDURE RUN_JOBS AS 
BEGIN 
    MYUSER.MYPROCEDURE1(); 
    MYUSER.MYPROCEDURE2(); 
    MYUSER.MYPROCEDURE3(); 
    MYUSER.MYPROCEDURE4(); 
    MYUSER.MYPROCEDURE5(); 
END; 
/

Я хотел бы использовать DBMS_SCHEDULER для запуска MYPROCEDURE3(), MYPROCEDURE4(), MYPROCEDURE5() в параллельных после завершения MYPROCEDURE2().

Может ли кто-нибудь показать мне пример того, как это установить?

ответ

1

Вы можете обратиться к цепи под пакет DBMS_SCHEDULER: http://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse009.htm

Вы также можете достичь того же, пройдя через Oracle Enterprise Manager, но я не могу найти какие-либо ссылки на документацию прямо сейчас.

0

создайте три разных задания для каждой процедуры и планируйте их одновременно.

+0

Это не сработает - вы не сможете вызвать всех из них после завершения Proc 2 –

1

Вы можете сделать это с помощью DBMS_SCHEDULER.

CREATE OR REPLACE PROCEDURE RUN_JOBS 
AS 
v_JobNum NUMBER := 1; 
BEGIN 
BEGIN 
    DBMS_JOB.SUBMIT(v_JobNum,'MYUSER.MYPROCEDURE1;',sysdate,'sysdate +1'); 
    DBMS_JOB.SUBMIT(v_JobNum,'MYUSER.MYPROCEDURE2;',sysdate,'sysdate +1'); 
    DBMS_JOB.SUBMIT(v_JobNum,'MYUSER.MYPROCEDURE3;',sysdate,'sysdate +1'); 
    DBMS_JOB.SUBMIT(v_JobNum,'MYUSER.MYPROCEDURE4;',sysdate,'sysdate +1'); 
    COMMIT; 
END; 
END RUN_JOBS; 
/

Это будет отправить задание и запустить их немедленно.

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