【问题标题】:Job scheduler not execute in oracle作业调度程序不在 oracle 中执行
【发布时间】:2019-10-05 06:22:07
【问题描述】:

code of oracle 我创建了一个作业调度程序,在表中插入 ID 和 sysdate,但是当我运行 select * from table;然后没有找到记录。

create or replace procedure job_schedule_demo_proc is
x number:=1;
y number;
begin
select max(id) into y from job_schedule_demo;
if ( y is null) then
insert into job_schedule_demo values (1,sysdate);
else
x:=y+1;
insert into job_schedule_demo values (x,sysdate);
end if;
commit;
end; 

BEGIN 
      DBMS_SCHEDULER.create_job ( job_name=> 'test_full_job_definition',
                                  job_type=> 'PLSQL_BLOCK',
                                  job_action=> 'BEGIN job_schedule_demo_proc(); END;',
                                  start_date=> SYSTIMESTAMP,
                                  repeat_interval => 'freq=minutely; byminute=1; bysecond=0;',
                                  end_date=> NULL,
                                  enabled=> TRUE,
                                  comments=> 'Job defined entirely by the CREATE JOB procedure.');
END;

【问题讨论】:

  • Shubham,请更新 job_type = 'STORED_PROCEDURE' 而不是 job_type=> 'PLSQL_BLOCK',看看这是否有什么不同。
  • @AnkitBajpai 当更改作业类型 = 'STORED_PROCEDURE' 然后给出错误。但是当我手动运行调度程序时,记录成功插入到表中。
  • 错误是什么
  • 13:17:20 第 1 行:ORA-27452: BEGIN job_schedule_demo_proc();结尾;是数据库对象的无效名称。
  • 添加这个repeat_interval => 'FREQ=SECONDLY;INTERVAL=60' or FREQ=MINUTELY;INTERVAL=1;其中任何一个都可以工作

标签: sql oracle oracle11g


【解决方案1】:

您是否尝试手动运行该程序?

查看此视图​​以获取有关作业运行状态的更多详细信息,您将获得一些线索。

“DBA_SCHEDULER_JOB_RUN_DETAILS”

【讨论】:

  • 执行 dbms_scheduler.run_job('TEST_FULL_JOB_DEFINITION');当我手动执行作业调度程序然后记录插入表中
  • DBA_SCHEDULER_JOB_RUN_DETAILS 视图怎么样?
  • 我手动运行调度程序,然后进入该视图“DBA_SCHEDULER_JOB_RUN_DETAILS”
  • 那么这是调度问题,尝试像这样更改repeat_interval - repeat_interval => 'SYSTIMESTAMP + INTERVAL '1' MINUTE',
  • 给出错误 bcoz 单引号问题,例如 'SYSTIMESTAMP + INTERVAL '1' MINUTE' IN '1' 然后在开始时有单引号,并且在开始时也有单引号,然后给出类似引用的错误不匹配
【解决方案2】:

只需将 job_action 替换为 job_action=> 'job_schedule_demo_proc;'。 Job_type 应该保持相同的 PLSQL_BLOCK

【讨论】:

  • 13:17:20 第 1 行:ORA-27452: BEGIN job_schedule_demo_proc();结尾;当我将 plsql_block 更改为 STORED_PROCEDURE 时,上面的错误是数据库对象的无效名称
  • 现在执行但记录没有自动插入到表中
  • 删除开始和结束,因为这使它成为一个 pl/sql 只需将其替换为 job_action=> 'job_schedule_demo_proc;'我猜 job_type 可以是 Pl/sql 块以及作业本身在调用任何其他过程等时创建它我会更新我的答案
  • 现在执行但记录没有自动插入到表中
  • done bro 现在自动在表中插入记录,但我希望间隔时间为一分钟,那该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
相关资源
最近更新 更多