oracle 相邻两行时间差,日志文件的两行之间的时间差

如果这太基础,我很抱歉。我真的不想找人做这项工作,而是指向正确的方向。我有一个日志文件可以追溯到几年,我希望通过这些日志文件来确定在性能变慢时需要花费多长时间来查找模式。我能够阅读每一行,但无法读取上一行来获得时间。

日志文件如下所示:

~

Other Stuff

~

12/21/11 18:58:15 Inserting data into ST_ITEMS

ST_ITEMS Row: 10000 inserted at 12/21/11 19:40:06

ST_ITEMS Row: 20000 inserted at 12/21/11 20:05:58

ST_ITEMS Row: 30000 inserted at 12/21/11 20:37:03

ST_ITEMS Row: 40000 inserted at 12/21/11 20:59:25

ST_ITEMS Row: 50000 inserted at 12/21/11 21:17:43

ST_ITEMS Row: 60000 inserted at 12/21/11 21:54:47

12/21/11 21:59:24 Finished inserting data into Staging Tables

~

Other Stuff

~

12/21/11 22:04:43 Inserting data into ST_ITEMS

ST_ITEMS Row: 10000 inserted at 12/21/11 22:38:53

ST_ITEMS Row: 20000 inserted at 12/21/11 23:06:33

ST_ITEMS Row: 30000 inserted at 12/21/11 23:33:03

ST_ITEMS Row: 40000 inserted at 12/22/11 00:05:38

ST_ITEMS Row: 50000 inserted at 12/22/11 00:45:59

ST_ITEMS Row: 60000 inserted at 12/22/11 01:12:42

ST_ITEMS Row: 70000 inserted at 12/22/11 01:40:02

ST_ITEMS Row: 80000 inserted at 12/22/11 02:14:23

ST_ITEMS Row: 90000 inserted at 12/22/11 03:04:15

ST_ITEMS Row: 100000 inserted at 12/22/11 03:47:13

ST_ITEMS Row: 110000 inserted at 12/22/11 04:36:21

ST_ITEMS Row: 120000 inserted at 12/22/11 05:44:47

ST_ITEMS Row: 130000 inserted at 12/22/11 06:28:24

ST_ITEMS Row: 140000 inserted at 12/22/11 07:10:55

ST_ITEMS Row: 150000 inserted at 12/22/11 07:35:16

12/22/11 07:40:28 Finished inserting data into Staging Tables

~

Other Stuff

~本质上,我想通过从上面一行减去一行的日期/时间来计算每行10000行的时间。我将Perl和Bash看作是选项,但Perl似乎提供了更多的可能性。

PERL

#!的/ usr / bin中/ perl的

use strict;

use warnings;

use Date::Parse;

use Date::Format;

my $start = "2007-11-17 12:50:22";

my $stop = "2007-11-17 12:53:22";

my $diff = str2time($stop) - str2time($start);

#printf "diff between %s and %s is %d seconds\n", $start, $stop, $diff;

open(LOG,"info_refresh_tvl.log.122111_185800") or die "Unable to open logfile:$!\n";

while(my $line = ){

if ($line=~/inserted\b/)

{

#Pseudocode

#Parse time from Pervious Line

#Parse time from Current Line

#Calculate Difference of Time

#my $diff = str2time($stop) - str2time($start);

#printf "diff between %s and %s is %d seconds\n", $start, $stop, $diff; ')

printf $line ;

}

}

close(LOG);BASH

grep 'ST_ITEMS Row:' logfile122111.log | while read line

do

event=$(echo "$line" | awk '{print $6 " " $7}')

case $event in

"10000")

;;

*)

past=$(echo "$line" | awk '{print $6 " " $7}')

current=$(echo "$line" | awk '{print $6 " " $7}'

echo $past

echo $current)

;;

esac

echo $event

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值