我们的 Oracle Scheduler 无法在某些环境中工作,但在某些环境中可以工作。在它工作的环境中,以下查询返回 1 行
select program from v$session where osuser = 'oracle' and program like '%(CJQ0)%';
[email protected] (CJQ0)
在它不工作的环境中,不会返回任何行。
这是我执行的测试,以查看调度程序是否正在运行。它应该立即启动该作业。
CREATE TABLE MySchema.TEMP_DBMS_JOB (
A NUMBER(*, 0))
DECLARE
l_jobid int;
BEGIN
dbms_job.submit(job => l_jobid, what => 'begin insert into MySchema.temp_dbms_job (a) values (13); commit; end;');
dbms_output.put_line(l_jobid);
COMMIT;
END;
DBA 可以做什么来让调度程序运行?“CJQ0”会话查询是否可以帮助您识别问题的潜在根源?DBA 认为调度程序的配置没有问题。
我们还尝试使用 DBMS_SCHEDULER.create_job 来提交作业,而不是已弃用的 dbms_job.submit,并且在相同的环境中获得了完全相同的结果。
我计划在这个问题达到所需的足够年龄后立即提供 3000 点赏金。如果在此之前有答案导致解决方案,我仍然会提供要点。
疑难解答问题及解答:
DBA_SCHEDULER_JOBS
或中有行DBA_SCHEDULER_JOB_RUN_DETAILS
吗?(去做)DBA_SCHEDULER.CREATE_JOB
,有没有抛出任何错误?(去做)DBA_SCHEDULER_JOBS
,您可以粘贴一些示例行吗?(这可能很困难,因为表中有几十列。) (todo)我为这个问题创建了一个 Wiki 答案,因为我认为会有很多来回,并且这个清单将比一百万条评论更容易阅读。我很确定我确实在 support.oracle.com 上看到过这样的清单,但我再也找不到它了。
通过重新启动数据库“容器”解决了该问题。