Oracle-数据库启动时启动作业

Oracle-数据库启动时启动作业,oracle,plsql,job-scheduling,Oracle,Plsql,Job Scheduling,我想安排一个plsql过程在每次Oracle数据库启动时运行。该过程将执行一个无限循环,每隔30秒通过REST接口从远程服务器检索数据,并将其插入本地数据库表。然而,DBMS_调度程序似乎不支持这种情况,因为它希望以指定的间隔运行作业 我不想每30秒再做一次作业,因为第一个作业将在无限循环中运行。然后我将有数百万个工作在一个无限循环中运行。另外,我还从30秒中减去RESTAPI完成所需的时间,这样我就可以精确地每30秒调用一次受限RESTAPI 另外,有时候RESTAPI需要超过30秒才能完成,

我想安排一个plsql过程在每次Oracle数据库启动时运行。该过程将执行一个无限循环,每隔30秒通过REST接口从远程服务器检索数据,并将其插入本地数据库表。然而,DBMS_调度程序似乎不支持这种情况,因为它希望以指定的间隔运行作业


我不想每30秒再做一次作业,因为第一个作业将在无限循环中运行。然后我将有数百万个工作在一个无限循环中运行。另外,我还从30秒中减去RESTAPI完成所需的时间,这样我就可以精确地每30秒调用一次受限RESTAPI


另外,有时候RESTAPI需要超过30秒才能完成,所以我只想在它完成时再次调用。所有这些都是为了防止节流


如何安排作业,使其在每次数据库启动时启动,以便始终运行?

只需将其安排为每30秒运行一次即可。当数据库关闭时,当然什么也不会发生。但是,一旦启动,调度程序将接管并按计划执行该作业

似乎我误解了这个问题——您希望在启动时运行一个作业,它将在无限循环中运行。30秒把我弄糊涂了

无论如何:创建一个在数据库启动时触发的数据库触发器,并让它安排该作业。例如:

create or replace trigger trg_schedule_job
  after startup on database
begin
  dbms_scheduler.run_job('schedule_job');
end;
/

我不想每30秒再做一次作业,因为第一个作业将在无限循环中运行。然后我将有数百万个工作在一个无限循环中运行。另外,我还从30秒中减去REST API完成所需的时间,这样我就可以精确地每30秒调用一次限制性REST API。有时候REST API完成所需的时间超过30秒,所以我只想在它完成时再次调用。所有这些都是为了防止节流。啊哈。对不起,我完全误解了这个问题。在这种情况下,触发器可能会有所帮助。我编辑了我的答案;请看一看。更好的方法就是每隔30秒安排一次作业,让它正常完成。但是,如果您确实需要无限循环作业,那么请查看数据类型interval day to second(从天到秒),以计算到下一次迭代所需的时间间隔,以及Oracle提供的包。