繁体   English   中英

分析日志表-Oracle 11g

[英]Analyze log table - Oracle 11g

我在Oracle 11g上有此表:

CREATE TABLE USER.HISTORY_LOG
(
  ID                       NUMBER,
  DATE                     DATE,
  COUNT_INSERTED_ROWS      NUMBER,
  EXEC_TIME                VARCHAR2(50 BYTE)
)

一些数据:

ID      DATE                COUNT_INSERTED_ROWS EXEC_TIME

6356    04/04/2016 09:36:03 1074    00h:00m:58s:769ms
6355    04/04/2016 09:33:00 1074    00h:00m:56s:221ms
6354    04/04/2016 09:30:11 1074    00h:01m:06s:719ms
6353    04/04/2016 09:27:13 1074    00h:01m:08s:977ms
6352    04/04/2016 09:24:13 1074    00h:01m:09s:361ms
6351    04/04/2016 09:21:12 1074    00h:01m:07s:685ms
6350    04/04/2016 09:18:11 1074    00h:01m:06s:657ms
6349    04/04/2016 09:15:01 1074    00h:00m:57s:074ms

该表由用c#编写的控制台应用程序提供,该应用程序每3分钟“永远”运行...但是它可能由于某些服务器问题(如不可用)而崩溃..我必须检查是否有任何时间-以及何时-发生这种情况。 如何使用SQL做到这一点? 我需要的是这样的:

在日期X和日期Y之间,花费了超过3分钟的时间来执行。

我想使用SQL解决...。有什么办法可以做到? 我承认我没有构想去建立一个查询来做到这一点。

您可以尝试使用以下方法:

select *
from (
    select lag(date_)over ( order by date_) as date_before_ko,
           date_ as date_after_ko,
           floor((date_ - lag(date_) over ( order by date_))*24*60) as minutes_passed  
    from HISTORY_LOG
)
where minutes_passed > 4

这将为每一行计算先前的记录,并检查两个日期之间的分钟差是否大于4。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM