【发布时间】:2014-12-29 06:14:08
【问题描述】:
我在作业 Oracle 中运行过程 X 时遇到困难。在过程 X 中,它也在调用每个作业。
这是我的代码(运行作业):
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'begin
ss_run_all_jobs3;
end;'
,next_date => to_date('01/01/4000 00:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'SYSDATE+2.5/1440 '
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
SYS.DBMS_JOB.BROKEN
(job => X,
broken => TRUE);
COMMIT;
END;
/
程序 SS_RUN_ALL_JOBS3;
/*other script ... */
BEGIN ss_print_all; END;
/*other script ... */
PROCEDURE ss_print_all
CREATE OR REPLACE PROCEDURE SEAT.ss_print_all
IS
l_jobno pls_integer;
BEGIN
dbms_job.submit(l_jobno, 'begin ss_print_1; end;' ,sysdate);
dbms_job.submit(l_jobno, 'begin ss_print_2; end;' ,sysdate);
dbms_job.submit(l_jobno, 'begin ss_print_3; end;' ,sysdate);
dbms_job.run(l_jobno);
END;
/
示例 ss_print_1 的每个过程
vname := 'RUNPRINT_SEATFRONT';--||vcounter;
--DBMS_SCHEDULER.drop_job(vname);
dbms_scheduler.drop_job (vname);
dbms_scheduler.create_job(
job_name => vname,
job_type => 'EXECUTABLE',
job_action => 'C:\Windows\System32\cmd.exe',
job_class => 'DEFAULT_JOB_CLASS',
--comments => 'test job',
auto_drop => false,
number_of_arguments => 3,
enabled => FALSE);
dbms_scheduler.set_job_argument_value( job_name => vname, argument_position => 1, argument_value => '/q');
dbms_scheduler.set_job_argument_value( job_name => vname, argument_position => 2, argument_value => '/c');
dbms_scheduler.set_job_argument_value( job_name => vname, argument_position => 3, argument_value => '"'||xxx.txt||'"');
dbms_scheduler.enable( vname);
如果在 pl/sql 编辑器(TOAD 编辑器)中运行它运行良好,但如果使用作业(第一个代码)运行它会导致错误
13:12:05 Info: Job #442 could not be executed. ORA-12011: execution of 1 jobs failed
ORA-06512: at "SYS.DBMS_IJOB", line 651
ORA-06512: at "SYS.DBMS_JOB", line 284
ORA-06512: at line 1
是因为第一份工作仍在处理中吗?
谢谢你..
【问题讨论】:
标签: oracle stored-procedures plsql scheduler jobs