1

我需要实现一个用 PL/SQL 编写的心跳函数,每 5 分钟 ping 一次 Web 服务。我知道 PL/SQL 确实不是编写此代码的正确语言,但必须以这种方式完成。

DECLARE
stored_time   TIMESTAMP
curr_time     TIMESTAMP
BEGIN
   stored_time := current_timestamp;
   WHILE (curr_time - stored_time > 5)
      pulse_heartbeat();
      stored_time := current_timestamp;
   END WHILE

上面的伪代码确实是我认为可以完成的唯一方法。我知道有一个带有 oracle 的计时器包,但我不确定我是否应该使用它。有任何想法吗?

4

1 回答 1

3

您似乎希望每 5 分钟安排一次程序执行。我建议使用DBMS_SCHEDULER

数据库级别

BEGIN
  DBMS_SCHEDULER.create_job (
    job_name        => 'pulse_heartbeat',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN pulse_heartbeat; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'freq=minutely; interval=5; bysecond=0;',
    enabled         => TRUE);
END;
/

上面使用日历语法每 5 分钟重复一次间隔。它在数据库级别创建一个作业。

操作系统级别

您还可以安排脚本在操作系统级别运行。例如,在基于 UNIX 的平台中,您可以创建一个shell 脚本并安排为cron 作业

于 2015-10-15T09:49:56.320 回答