Oracle - 当数据库启动时启动工作

问题描述 投票:0回答:1

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

我不希望每30秒又有一个作业,因为第一个作业会无限循环运行。那么我将有数百万个作业在无限循环中运行。另外我还从30秒中减去REST API完成的时间,这样我就可以精确地每30秒调用限制性的REST API。

另外有时候REST API完成的时间超过30秒,那么我只想在它完成后再调用。所有这些都是为了防止被节制。

我如何调度一个作业,使它在每次数据库启动时都能启动,从而使它始终运行?

oracle plsql job-scheduling
1个回答
1
投票

只要安排它每30秒运行一次即可。当数据库宕机时,当然那什么也不会发生。但是,只要它起来了,调度器就会接管并按计划执行该作业。


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

总之:创建一个数据库触发器,在数据库启动时触发,让它调度该作业。比如说

create or replace trigger trg_schedule_job
  after startup on database
begin
  dbms_scheduler.run_job('schedule_job');
end;
/
© www.soinside.com 2019 - 2024. All rights reserved.