2012-12-19 3 views
1

Oracle 10g XE를 사용하고 있으며 저장 프로 시저에 대한 예약 된 작업을 만들려고합니다. 나는 hrOracle XE에서 저장 프로 시저를 예약하는 방법은 무엇입니까?

grant create job to hr ; 
grant create external job to hr ; 

다음 hr로 기록에 대한 권한을 부여하고이 성공 작업

begin 
    dbms_scheduler.create_job(
     job_name => 'THIS_IS_DA_NAME', 
     job_type => 'STORED_PROCEDURE', 
     job_action => 'PROC_MYSTOREDPROC', 
     start_date => sysdate + (5/(24*60)), 
     repeat_interval => 'FREQ=MINUTELY; interval=1', 
     enabled => TRUE, 
     comments => 'Runtime: Every day every minute'); 
end; 

를 만들었습니다. 그러나 작업이 dba_scheduler_job_run_details 또는 dba_scheduler_job_log

select log_date, job_name, status, req_start_date, actual_start_date, run_duration 
from dba_scheduler_job_run_details 

select log_date, job_name, status 
from dba_scheduler_job_log 

그것은이보기에 나열됩니다/테이블 문제가 여기에 무엇

select * 
from dba_scheduler_jobs 

, 저장 프로 시저가 실행되지 않습니다 이유에 표시되지 않습니다? 그것은 즉시 작업을 실행, 또한

exec PROC_MYSTOREDPROC 

를 사용하여 잘 실행에서

EXEC dbms_scheduler.run_job('hr.THIS_IS_DA_NAME'); 
+0

커밋하셨습니까? –

+0

언제 사귈까요? 일자리를 만들거나 뭐라구? – jrara

답변

1

단지 위대한 작동 DBMS_SCHEDULER documentation :

JOB_QUEUE_PROCESSES 초기화 매개 변수가 생성 될 수있는 프로세스의 최대 수를 지정합니다 직업을 수행하기 위해. Oracle Database 11g Release 2 (11.2)부터는 DBMS_SCHEDULER 작업에 JOB_QUEUE_PROCESSES이 적용됩니다. 이 매개 변수를 0으로 설정하면 DBMS_SCHEDULER 작업이 비활성화됩니다.

는 그래서 JOB_QUEUE_PROCESSES 초기화 매개 변수가

또한 당신이 당신의 작업 요청의 유효성 검사를 실행하는 데 투입 할 필요가 1 위의 값으로 설정되어 있는지 확인합니다. 당신이 최선을 다하고 나면

이 작업은 USER_SCHEDULER_JOBS보기에 예약됩니다 : 물론

SQL> select job_name, start_date from user_scheduler_jobs; 

JOB_NAME  START_DATE 
--------------- ----------------------------------- 
THIS_IS_DA_NAME 19-DEC-12 08.15.47.000000 AM -06:00 

, 당신이 요청했기 때문에 그것은 미래에 5 분 예약 할 수 있도록,에 행이 없을 것 USER_SCHEDULER_JOB_LOG 당신이 5 분 기다리면 아직하지만, 당신이 볼 수 행 : 다음

SQL> select job_name, log_date, status from user_scheduler_job_log 
     WHERE job_name = 'THIS_IS_DA_NAME'; 

JOB_NAME  LOG_DATE       STATUS 
--------------- ----------------------------------- ------------- 
THIS_IS_DA_NAME 19-DEC-12 08.15.47.009921 AM -06:00 SUCCEEDED 
THIS_IS_DA_NAME 19-DEC-12 08.16.47.009534 AM -06:00 SUCCEEDED 
+0

감사합니다. 10g XE를 사용하고 있습니다. job_queue_process는 값이 4 인 것 같습니다. – jrara

0
DBMS_SCHEDULER.enable ('THIS_IS_DA_NAME'); 

및 코드 또는이 시도 :

begin 
    dbms_scheduler.create_job(
     job_name => 'THIS_IS_DA_NAME', 
     job_type => 'PLSQL_BLOCK', 
     job_action => 'BEGIN PROC_MYSTOREDPROC; END;', 
     start_date => sysdate + (5/(24*60)), 
     repeat_interval => 'FREQ=MINUTELY; interval=1', 
     enabled => TRUE, 
     comments => 'Runtime: Every day every minute'); 
end; 
+0

첫 번째 명령문이 PROC_MYSTOREDPROC 대신 THIS_IS_DA_NAME 작업을 사용 가능하게 설정해야합니까? – jrara

+0

@jrara 오 예, 죄송합니다. DBMS_SCHEDULER.enable ('THIS_IS_DA_NAME'); –

+0

이 작업 작성 문은 작동하지만 스케줄러는 프로 시저를 실행하지 않습니다. – jrara

관련 문제