简体   繁体   中英

Analyze log table - Oracle 11g

I have this table on Oracle 11g:

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

Some data:

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

This table is fed by a console app writen in c#, which runs every 3 minutes "forever"... But it can crash by some server's issue like unavailability.. and I must check if there was any time - and when - this happened. how can I do that using SQL? What I need is something like that:

Between date X and Y, it took more than 3 minutes to execute.

I want to solve using SQL.... is there any way I can do that? I confess that I'm out of ideas to build a query to do that.

You can try with something like this:

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

This computes, for each row, the preceeding record and checks if the difference in minutes between the two dates is more than 4.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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