DBMS_Scheduler를 사용하여 백엔드 (이메일 전송 용)에 예약 된 작업이 있습니다. 그러나 요구 사항은 사용자가 전자 메일을 예약 할 수있을뿐 아니라 단추를 클릭하는 즉시 전자 메일을 보낼 수 있도록하는 것이 었습니다 .
이를 수행하기 위해 다음과 같이 배치했습니다. 사용자가 버튼을 클릭하면 프로 시저가 호출됩니다. 프로시 저는 위에서 언급 한 작업을 실행합니다 (run_job 사용). 이를 통해 동일한 작업을 사용하여 이메일을 즉시 보내고 예정된 시간에 나중에 보낼 수있었습니다.
내가 지금 직면 한 문제는 이것이다 : 사용자 A가 버튼을 클릭한다고 가정하자. 동시에 사용자 B는 시스템의 버튼을 클릭합니다. 그런 다음 사용자 B는 다음 오류 메시지를받습니다. 작업이 이미 실행 중입니다.
Oracle 에서 동일한 작업을 여러 번 ( 병렬 ) 실행하려면 어떻게해야 합니까?
DBMS_SCHEDULER.RUN
매개 변수 USE_CURRENT_SESSION
를로 설정합니다 TRUE
.
--Create a test job.
begin
dbms_scheduler.create_job(
job_name => 'TEST_JOB',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN dbms_lock.sleep(3); END;');
end;
/
--This fails if run concurrently.
begin
dbms_scheduler.run_job(job_name => 'TEST_JOB', use_current_session => FALSE);
end;
/
--This can run concurrently.
begin
dbms_scheduler.run_job(job_name => 'TEST_JOB', use_current_session => TRUE);
end;
/
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다