Oracle 用于验证表中在过去5分钟内更新的数据的脚本

Oracle 用于验证表中在过去5分钟内更新的数据的脚本,oracle,oracle19c,Oracle,Oracle19c,我们拥有一个web应用程序,并将此web应用程序的所有传入请求实时记录到Oracle表中。此数据包括具有不同http状态代码200400…的记录 我们需要创建一个监控/警报脚本,每30分钟运行一次,并检查表中最近5分钟更新的数据。如果http状态代码为200的记录在过去5分钟内小于100或http状态为400的记录小于50,则应发出警报 寻求实现这一目标的想法 提前谢谢 哈雷什 以下查询仅在满足条件时才会返回记录。因此,您可能编写程序只是为了检查是否有要返回的行 如果有一列指示记录是何时插入的,

我们拥有一个web应用程序,并将此web应用程序的所有传入请求实时记录到Oracle表中。此数据包括具有不同http状态代码200400…的记录

我们需要创建一个监控/警报脚本,每30分钟运行一次,并检查表中最近5分钟更新的数据。如果http状态代码为200的记录在过去5分钟内小于100或http状态为400的记录小于50,则应发出警报

寻求实现这一目标的想法

提前谢谢

哈雷什
以下查询仅在满足条件时才会返回记录。因此,您可能编写程序只是为了检查是否有要返回的行

如果有一列指示记录是何时插入的,您可能会继续这样做。假设您有一个名为insert\u date的日期列

 select 'alert'
   from your_table
  where insert_date < sysdate - interval '5' minute
    and status in (100, 200)
  having count(case when status = 200 then 1 else null end) < 100 --  code 200 are less than 100
    or count(case when status = 400 then 1 else null end) < 50 -- status 400 are less than 50
如果没有这样的专栏,那么除了使用闪回查询功能,我看不到任何其他可能性:

 select 'alert'
   from ( select * 
            from your_table
          minus
          select * 
            from your_tables of timestamp systimestamp - interval '5' minute)
  where  status in (100, 200)
 having count(case when status = 200 then 1 else null end) < 100 --  code 200 are less than 100
     or count(case when status = 400 then 1 else null end) < 50 -- status 400 are less than 50

如果您还没有调度实用程序,您可能希望研究使用DBMS_SCHEDULER.CREATE_JOB创建每30分钟运行一次的PL/SQL块。在该区块内,您可以调用UTL_MAIL.SEND发送电子邮件或文本警报。

是否有任何列可以说明何时插入该行?是的,有一列指定了记录插入的时间(以历元时间为单位)。我已经回答了您在这两种情况下的问题。请检查一下