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

Oracle - start job when database starts

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

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

此外,有时 REST API 需要超过 30 秒才能完成,所以我只想在它完成后再次调用。所有这些都是为了防止受到限制。

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

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


看来我误解了这个问题 - 你想在启动时 运行 一个工作 ,它会 运行 无限循环。让我困惑的是“30秒”。

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

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