2017-01-18 5 views
1

내가 네 행위 아이디의이있는 경우 작업 ID가, 즉 처리하기 위해는 평행

PROCEDURE handle_NR_Site(
    i_old_plan_inst_id NUMBER, 
    i_new_plan_inst_id NUMBER, 
    i_old_act_id  NUMBER, 
    i_new_act_id  NUMBER) 

를 호출이다 "OMX_BEACON_MIG"그럼 내가이 절차 4를 호출하고 하나 개 PLSQL 패키지가 " i_old_plan_inst_id" , "i_new_plan_inst_id","i_old_act_id","i_new_act_id" 번 이후는 모든 작업마다 다릅니다.

나는이 절차를 한 번만 호출 할 수 있으며 모든 4 가지 작업을 한 번 처리 할 수있는 솔루션이 있습니까?

또는이 함수를 하나씩 호출하는 대신 병렬로 호출하는 방법이 있습니까? 안내하십시오.

+1

,하지만, 당신은 할 수있는 몇 가지 모니터링 코드를 작성해야 작업이 완료되었는지 확인하고, 하나 이상의 작업이 실패한 경우를 처리해야합니다. 또는 handle_nr_site 프로 시저를보고 여러 작업을 동시에 처리하도록 변환하는 방법이 있는지 확인할 수 있습니다. – Boneist

답변

0

오라클은 작업을 병렬로 실행하는 데 아주 좋은 유틸리티 dbms_scheduler를 가지고 있습니다. 아래 함수를 다른 매개 변수로 네 번 호출하여 병렬로 실행할 수 있습니다.

dbms_scheduler.create_job(job_name => dbms_scheduler.generate_job_name('MY_JOB_'), 
    job_type => 'PLSQL_BLOCK', 
    job_action => 'begin handle_NR_Site(i_old_plan_inst_id => param1, i_new_plan_inst_id => param2, i_old_act_id => param3, i_new_act_id => param4); end;', 
    comments => 'Thread 1 descriptionn', 
    enabled => true, 
    auto_drop => true); 

작업이 백그라운드에서 실행됩니다. 실행 상태를 얻으려면 DBA_SCHEDULER_JOB_RUN_DETAILS 테이블을 쿼리하십시오. 링크 확인 자세한 설명은

: 코드는 4 작업이 완료되면 계속해야하는 경우 4 임시 예약 된 작업을 만들 수 https://oracle-base.com/articles/10g/scheduler-10g