【发布时间】:2017-01-31 08:41:31
【问题描述】:
我正在尝试使用 DBMS_JOB 通过包执行多个存储过程。即使作业正在提交并在 USER_JOBS 中显示,但由于某种原因它没有开始。我尝试过使用和不使用具有相同结果的“开始日期”参数,即没有开始。
我正在使用 ORACLE 9i,我想我不能使用 dbms_scheduler。
在代码下方找到:
--PACKAGE BODY--
create or replace
PACKAGE BODY PKG_TEST IS
PROCEDURE PASSPORT_DC_1 IS
l_jobno binary_integer;
l_jobno1 binary_integer;
BEGIN
dbms_job.submit(l_jobno1, 'BEGIN SP_ABC(); END;',SYSDATE );
DBMS_OUTPUT.PUT_LINE('SP_UPDATE_TIDCUMTL :' || l_jobno1);
COMMIT;
dbms_job.submit(l_jobno, 'BEGIN SP_XYZ(); END;',SYSDATE);
DBMS_OUTPUT.PUT_LINE('SP_UPDATE_TIDPTDTL :' || l_jobno);
COMMIT;
END PASSPORT_DC_1;
--PACKAGE SPEC--
create or replace PACKAGE PKG_TEST AS
PROCEDURE PASSPORT_DC_1;
END PKG_TEST;
【问题讨论】:
-
我使用 9i 已经有一段时间了,但尝试将 start_date 设置为 SYSDATE + 1/1440。通过查看 DBA_JOBS 来检查作业定义是否与您期望的一样,并且该作业没有“损坏”。然后看看你是否可以使用带有 jobid 的 DBMS_JOB.RUN 强制作业运行。
-
当我尝试通过执行 DBMS_JOB.RUN(job id) 手动运行它时。它正在执行,但是由于 DBMS_JOB.RUN(job id) 顺序执行作业,并行性的目的被破坏了。在示例中,有 2 个作业必须并行启动。