Oracle 如何实现心跳定时器
我需要实现一个用PL/SQL编写的heartbeat函数,每5分钟ping一次web服务。我知道PL/SQL确实不是编写这篇文章的正确语言,但必须这样做Oracle 如何实现心跳定时器,oracle,plsql,dbms-scheduler,Oracle,Plsql,Dbms Scheduler,我需要实现一个用PL/SQL编写的heartbeat函数,每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(); s
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有一个计时器软件包,但我不确定是否应该使用它。有什么想法吗?似乎您希望每5分钟安排一次过程执行。我建议使用DBMS\u调度程序 数据库级别
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分钟重复间隔。它在数据库级别创建作业
操作系统级别
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;
/
您还可以安排脚本在操作系统级别运行。例如,在基于UNIX的平台中,您可以创建一个shell脚本,并将其计划为cron作业是否每5分钟执行一次该过程?如果是,则使用
DBMS\u调度程序
。是的,我只需要每隔5分钟运行一次该过程来维护会话状态OK,然后检查解决方案。这是一种标准的方法,这种心跳信号需要为单个用户工作,而不是一项工作。是否可以创建一个计划,并为不同的用户多次实例化?不清楚。该功能可以在PL/SQL代码中处理。这只是一个调度作业,它只会按要求的时间间隔执行该过程。逻辑将在过程中。每个用户会话都有自己的心跳。这是否意味着我必须为每个用户创建一个计划作业?该函数的作用是什么?具体要求是什么?如果建立了数据库会话,它永远不应该断开连接,并且应该始终在同一会话中每5分钟执行一次函数?